CORS란?
- Cross Origin Resource Sharing 의 약자로 다른 출처의 자원을 공유하는 것이다.
- 김훈기 블로그 에 더 자세한 내용이 있으니 따로 공부하길 바람.
- 이메일 같은 곳에 흥미로운 주소를 담아 보내게 하고 주소를 누르면 특정한 사이트에게 명령을 내릴 수 있다.
- 예를 들면 naver/mail에서 facebook의 특정 메세지를 보내게 하는 주소를 담아 보냈다고 하자. 이 경우 요청은 naver , 응답은 facebook 으로 도메인이 달라 cross origin 문제가 발생한다.
- 엄격하게 말하면 SOP(Same Origin Policy : 다른 출처의 리소스를 사용하는 것에 제한 하는 보안 방식)이 발생한다.
Origin?
- Protocol, Host, Port 셋을 합쳐서 Origin이라고 한다.
- CORS는 셋중하나만 달라져도 발생한다.
- 보통 호스트가 달라지는 경우가 주된 경우이다.
CORS를 사용해야 하는 이유
- 프론트엔드에서 백엔드로 요청을 할 때 요청을 할 때 만약 서버가 다르다면 Origin중 Host가 달라지게 된다. 또한 Frontend Application과 Backend Application의 Port번호 또한 달라질 수 있다.
- 이 상황에서 CORS를 사용하지 않을 경우 SOP 문제가 생겨 통신을 할 수 없게 된다.
- 따라서 어딘가에서 SOP를 피하기 위한 설정이 필요하다.
How?
- SOP를 피하기 위한 방법은 몇 가지가 있다.
- CORS header 사용
- 프록시 서버 사용
- JSONP 사용
- 위의 방법 말고도 여러 방법이 있지만 우리는 프록시 서버를 사용한 방법과 CORS Header를 이용한 방법 두 가지를 사용할 것이다.