๐Ÿ“˜ Web/Spring, JPA

[Spring] CORS ์„ค์ •

a n u e 2022. 7. 21. 11:02

 

๋ฐฑ์—”๋“œ์™€ ํ”„๋ก ํŠธ์—”๋“œ์˜ ์ถœ์ฒ˜๊ฐ€ ๋‹ค๋ฅธ ๊ฒฝ์šฐ, CORS(Cross-Origin Resource Sharing) ์„ค์ •์„ ํ•ด์ฃผ์–ด์•ผ ํ•œ๋‹ค.

๊ฐ๊ธฐ ๋‹ค๋ฅธ ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ ์ž์›์„ ๊ณต์œ ํ•  ๋•Œ, ๋ธŒ๋ผ์šฐ์ €๋Š” ๋ณด์•ˆ์ƒ์˜ ์ด์œ ๋กœ ์ถœ์ฒ˜๊ฐ€ ๋‹ค๋ฅด๋ฉด ์ด๋ฅผ ์ œํ•œํ•œ๋‹ค.

์ด๋ฅผ SOP(Same Origin Policy) ์ •์ฑ…์ด๋ผ๊ณ  ํ•œ๋‹ค.

์Šคํ”„๋ง๋ถ€ํŠธ๋Š” ์•„๋ฌด ์„ค์ •์„ ํ•˜์ง€ ์•Š์œผ๋ฉด SOP ์ •์ฑ…์„ ๋”ฐ๋ฅธ๋‹ค.

 

์ด๋ฅผ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•ด, ๋ฐฑ์—”๋“œ ์ชฝ์— CORS ์„ค์ •์„ ํ•ด์„œ ๋‚ด๊ฐ€ ํ—ˆ์šฉํ•œ origin ์ถœ์ฒ˜๋งŒ ์ ‘๊ทผ์„ ํ—ˆ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

 

๐Ÿ“’ ์ถœ์ฒ˜๋ž€?

ํ”„๋กœํ† ์ฝœ://๋„๋ฉ”์ธ:ํฌํŠธ

 ex) http://localhost:8080


์Šคํ”„๋ง์—์„œ CORS๋ฅผ ์„ค์ •ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ๋‘๊ฐ€์ง€ ๋ฐฉ๋ฒ•์ด ์กด์žฌํ•œ๋‹ค.

 

1. WebMvcConfigurer ์‚ฌ์šฉ (๊ธ€๋กœ๋ฒŒ ์„ค์ •)

 : WebMvcConfigurer๋ฅผ ์ƒ์†ํ•˜๋Š” ํด๋ž˜์Šค๋ฅผ ํ•˜๋‚˜ ๋งŒ๋“ค๊ณ , addCorsMappings ๋ฉ”์„œ๋“œ๋ฅผ ์ƒ์†๋ฐ›์•„ ์ด๋ฅผ ์ˆ˜์ •ํ•˜์—ฌ ์‚ฌ์šฉํ•œ๋‹ค.

์•„๋ž˜์™€ ๊ฐ™์ด !

registry์—๋Š” .allowedHeaders(), allowedMethods(), allowCredentials()๊ฐ€ ์ถ”๊ฐ€๋กœ ์กด์žฌํ•œ๋‹ค.

@Configuration
public class MvcConfig implements WebMvcConfigurer {
    @Override
    public void addCorsMappings(CorsRegistry registry) {
    	//๋ชจ๋“  URL์— ๋Œ€ํ•ด ์•„๋ž˜์™€ ๊ฐ™์€ ๋‘ ๊ฐœ์˜ ๋„๋ฉ”์ธ์˜ ์ ‘๊ทผ์„ ํ—ˆ์šฉ
        registry.addMapping("/**")
                .allowedOrigins("http://localhost:8170","http://localhost:8180");
    }
}

 

 

2. @CrossOrigin(origins = "ํ—ˆ์šฉ์ฃผ์†Œ:ํฌํŠธ") ์–ด๋…ธํ…Œ์ด์…˜ ์‚ฌ์šฉ (ํŠน์ • ์ปจํŠธ๋กค๋Ÿฌ์˜ URL์—๋งŒ ์ ์šฉ)

 

@Slf4j
@RequiredArgsConstructor
@CrossOrigin(origins = {"http://localhost:8170","http://localhost:8180"})
@RestController
public class BoardController {
    private final BoardService boardService;

	//๋ฉ”์„œ๋“œ ๋‹จ์œ„๋กœ ์ ์šฉ๋„ ๊ฐ€๋Šฅํ•จ
	//@CrossOrigin(origins = {"http://localhost:8170","http://localhost:8180"})
    @GetMapping("/board/list")
    public List<BoardDto> boardDtoList() {
        return ...
    }
}