CORS(Cross-Origin Resource Sharing) - 교차출처 소스 공유
흔히, 웹 개발을 하면서 CORS 정책 위반
관련 이슈로 우리는 CORS를 접하게 된다.
Cross를 교차
라는 단어 대신 다른
이라는 단어로 해석하면 이해가 쉽다.
다른 출처 리소스 공유
출처
란?Url의 구성요소로 파악할 수 있는데
protocol
, host
, port
의 일치 여부로 출처가 같음과 다름을 판단한다.
여기서, port는 url주소에서 생략되는데 이는 각 웹에서 사용하는 HTTP, HTTPS 프로토콜의 기본 포트 번호가 정해져있기 때문이다.
"같은 출처에서만 리소스를 공유할 수 있다"
보안상의 문제가 가장 크다
하지만, 실제 웹 생태계에서 다른 출처의 리소스를 가져오는 일은 매우 흔한 일이다.
그래서 CORS 정책으로 출처가 다르더라도 리소스를 가져올 수 있다는 예외조항을 설정하게 된 배경이다.
하지만, 우리는 CORS의 정책 위반으로 이슈를 맞이하게 되는 것이다.
서버가 아닌 브라우저
가 판단한다.
CORS는 브라우저의 구현 스펙에 포함되는 정책이기 때문에, 브라우저를 통하지 않고 서버 간 통신을 할 때는 이 정책이 적용되지 않는다.
즉, CORS 정책을 위반하는 리소스 요청을 해도 서버쪽 로그엔 200 정상적으로 응답성공했다고 나오기에 CORS 잘 파악하지 못하면 이슈를 잘 파악하기 어렵다.