CORS์๋ค.์ถ์ฒ(Origin)์์ ๋ก๋๋ ๋ฆฌ์์ค(Resource)์์ ๋ค๋ฅธ ์ถ์ฒ(Origin)์ ๋ฆฌ์์ค(Resource)๋ฅผ ์ ํํ๋ ์ ์ฑ
์น ๋ธ๋ผ์ฐ์ ์์ ์ ์ฉ ๋๋ JavaScript ๋ณด์ ์ ์ฑ
์ด๋ค.์ถ์ฒ๋ URL์ Protocol, HostName, Port๋ฅผ ํฉ์น ๊ฒ์ ๋งํ๋ค.

์ด ์ธ๊ฐ์ง ์ค์ ํ๋๋ผ๋ ๋ค๋ฅด๋ฉด ๋ค๋ฅธ ์ถ์ฒ๋ฅผ ํ์ธํ๋ค.
์ถ์ฒ์ ๋ํ ํ๋จ์ String Value๋ก ํ๋ค.

์ถ์ฒ(Origin)์์ ๋ฆฌ์์ค(Resource)๋ฅผ ๊ณต์ ํ ์ ์๋๋ก ํ๋ ์ ์ฑ
์น ๋ธ๋ผ์ฐ์ ์์ ์์ฒญ์ ๋ณด๋ผ ๋, Origin์ด๋ผ๋ ํค๋์ ํ์ฌ ๋ฆฌ์์ค์ ์ถ์ฒ ์ ๋ณด๋ฅผ ๋ด์์ ์์ฒญ์ ๋ณด๋ด๊ฒ ๋๋ค.
์๋ฒ์์ ์ด๋ค ์ถ์ฒ์์์ ์์ฒญ๋ง ํ์ฉํ์ฌ ํด๋น ์๋ฒ์ ๋ฆฌ์์ค๋ฅผ ๊ณต์ ๊ฐ๋ฅํ๊ฒ ํ๋ค.
Access-Control-Allow-Origin ๋ฑ์ ํค๋์ ์ ๋ณด๋ฅผ ํ์
ํ์ฌ, ๋ฆฌ์์ค๋ฅผ ๊ณต์ ํ ์ ์๋ ์ถ์ฒ์ธ์ง ํ์
ํ๋ค.์๋น ์์ฒญ์ ๋ณด๋ด Simple Request์ ๋ง์ฐฌ๊ฐ์ง๋ก Access-Control-Allow-Origin ๋ฑ์ ํ์ธํ์ฌ, ๋ฆฌ์์ค๋ฅผ ๊ณต์ ํ ์ ์๋ ์ถ์ฒ์ธ์ง ํ์
ํ๋ค.OPTIONS ๋ฉ์๋์ ์์ฒญ์ ๋ณด๋ด์ ํ์ฉ๋๋ ์ถ์ฒ์ธ์ง ํ์ธํ๋ค.
(์ถ์ฒ: https://livebook.manning.com/concept/cors/preflight-cache)
์ธ์ฆ ์ ๋ณด๋ฅผ ํฌํจํ๋ ์์ฒญ์ ๋ณด๋ด๋ ์๋๋ฆฌ์ค์ด๋ค.*(์์ผ๋ ์นด๋)๋ ์ฌ์ฉํ ์ ์๋ค.Access-Control-Allow-Credentials ํค๋๋ true๋ก ๊ฐ์ผํ๋ค.@Configuration
public class WebMvcConfig implements WebMvcConfigurer {
@Override
public void addCorsMappings(final CorsRegistry registry) {
registry.addMapping("/**")
.allowedOrigins("*")
.allowedMethods("*")
.allowedHeaders("*")
.maxAge(3000);
}
}
@RequestMapping ์ด๋
ธํ
์ด์
์ด ๋ถ์ ํธ๋ค๋ฌ์ ์ด๋
ธํ
์ด์
์ผ๋ก ์ค์ @RestController
public class MyController {
@CrossOrigin(origins = "https://a.aa")
@PostMapping("/orders")
public ResponseEntity<Void> orders() {
return ResponseEntity.build();
}
}
์ถ์ฒ(Origin)์์ ๋ก๋๋ ๋ฆฌ์์ค(Resource)์์ ๋ค๋ฅธ ์ถ์ฒ(Origin)์ ๋ฆฌ์์ค(Resource)๋ฅผ ์ ํํ๋ ์ ์ฑ
์ถ์ฒ(Origin)์์ ๋ฆฌ์์ค(Resource)๋ฅผ ๊ณต์ ํ ์ ์๋๋ก ํ๋ ์ ์ฑ