package.json
의 proxy를 설정 → 자신의 웹서버에 요청 → 웹서버가 실제 요청사용자가 방문한 사이트를 믿지 않기 때문이다. 사용자가 방문한 사이트가 나쁜 의도를 가지고 있는 경우 사용자의 정보(인증 토큰 등)를 탈취하여 요청을 보낼 수 있다. 따라서 서버는 이러한 문제를 차단하고자 알지 못하는(출처가 동일하지 않은) 사이트의 요청을 차단하는 것이다.
REQUEST: OPTIONS, http://test.com
RESPONSE: Access-Controll-Allow-Origin
이라는 헤더에 허용되는 출처가 응답된다.
응답된 허용된 출처와 동일한 경우 main request를 진행한다.
CORS preflight를 발생시키지 않는 요청이다. 다음 조건을 모두 충족한 경우 단순 요청이라고 한다.
단 응답에 Access-Controll-Allow-Origin
가 설정되지 않는다면 SOP 위반이 발생하게 된다.
@Override
public void addCorsMappings(CorsRegistry registry) {
registry.addMapping("/api/**")
.allowedMethods("GET", "POST")
.allowedOrigins("*");
}
OR
@Controller
@CrossOrigin(origins = "*")
public class CustomerController { ... }