ultra_dev
CORS란 본문
브라우저는 same-origin policy(SOP, 동일 출처 정책)에 의해 다른 출처의 리소스를 허용하지 않음.
CORS(Cross-Origin Resource Sharing, 교차 출처 리소스 공유)
-동일 출처가 아니더라도 요청을 수행할 수 있도록 해주는 SOP 예외 정책, 서로 다른 origin끼리 리소스 요청을 받을 수 있도록 표준( Same Origin Policy )을 우회하는 기술
SOP(same-origin policy, 동일 출처 정책)
- 브라우저가 동일 출처 정책을 준수해 다른 origin의 리소스 접근을 막는 것
Origin이란
- Protocol http , https + Host home (localhost , naver.com , google.com) + port (80 , 8080 , 8000)의 조합으로 이루어진 URL, 만약 동일하지 않다면 CORS 설정을 통하여 Access-Control-Allow-Origin을 서버의 응답헤더에 작성해서 접근 권한을 얻을 수 있음
프리플라잇이란?
- 브라우져는 서버에 request를 보낼 때 http 메서드중 options 메서드를 활용해 preflight을 전송 이 때 response로 서버는 허가된 origin과 method를 브라우저에게 알려주게 됨
브라우저가 정상적으로 response를 확인하고나면 이후 cors요청을 전송
CORS의 동작원리
서버 응답 시, 브라우저가 요청한 Origin과 헤더(Access-Control-Request-Headers)의 값을 비교하여 유효한 요청이면 리소스를 응답. 유효하지 않으면 브라우저에서 이를 막고 에러 발생
스프링에서 해결 방법
스프링에선 컨트롤러에서 특정 메서드 혹은 컨트롤러 상단부에 @CrossOrigin 어노테이션을 활용하는 방법과 WebMvcConfigurer의 addCorsMappings(CorsRegistry) 메소드를 사용하는 방법이 있는데 전자는 컨트롤러가 많을 수록 설정해야 하는 어노테이션이 많아진다는 단점 때문에 팀프로젝트에서는 후자를 사용
'Computer Science' 카테고리의 다른 글
GC(Garbage Collector) (0) | 2023.04.15 |
---|---|
HTTP/3 -> 왜 TCP가 아닌 UDP를 사용할까 (0) | 2023.04.11 |
RDB와 NOSQL (0) | 2023.04.06 |
오버로딩, 오버라이딩 (0) | 2023.04.05 |
시간 복잡도, 공간 복잡도 (0) | 2023.04.05 |