Computer Science

CORS (Cross Origin Resource Sharing)

CORS란?

 

기존 브라우저의 정책(Single Origin Policy)은 보안상의 이유로 다른 도메인의 리소스를 가져오는 것이 불가능했다. 

이를 해결하기 위해 등장한 표준 기술이 CORS (Cross Origin Resource Sharing)이다. CORS는 도메인이 다른 자원에 리소스를 요청할 때 접근 권한을 부여하는 매커니즘이다. 추가적인 Http Header를 이용하여 애플리케이션이 다른 origin의 리소스에 접근할 수 있도록 하는 것이다.

 

public class PathApiController {
	@CrossOrigin("http://localhost:6666") //localhost:6666에 대해서만 개방한다.
	@GetMapping("/paths")
	public ResponseEntity findPath() {
		...
	}
}

 

 

Configuration에 명시해서 CORS를 설정할 수도 있다.

 

 

 

@Configuration
public class WebConfig implements WebMvcConfigurer {
    @Override
    public void addCorsMappings(CorsRegistry registry) {
        registry.addMapping("/**").allowedMethods("*").allowedOriginPatterns("*");
    }
}

 

 

여기서 추가적으로, Interceptor와 같은 것을 이용하면 CORS가 발생하는데, 이는 검증이 이루어지기 전에 요청이 반환되어 일어날 수 있다. 이러한 경우에는 Option을 true로 변경함으로서 해결할 수 있다. 이 방법으로 prefilght를 true로 만들어줄 수 있다.

 

if (HttpMethod.OPTIONS.matches(request.getMethod())) {
    return true;
}