Notice
Recent Posts
Recent Comments
Link
«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
Tags more
Archives
Today
Total
관리 메뉴

ultra_dev

CORS란 본문

Computer Science

CORS란

ultra_dev 2023. 4. 7. 13:57

브라우저는 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
Comments