CORS
CORS (Cross Origin Resource Sharing)
다른 Origin으로 요청을 보내기 위해 지켜야하는 브라우저의 정책으로 교차 출처 자원 공유라고 부름
원래대로라면 SOP에 의해 막히게 될 요청을 풀어주는 정책임
즉, 서버는 평소처럼 요청이 오면 응답을 해줄 뿐이고, 브라우저가 자신이 보낸 요청 및 서버로부터 받은 응답의 데이터가 CORS 정책을 지키는지 검사하여 안전한 요청을 보낸 건지 검사하는 것이다. 따라서 서버가 정상적으로 응답을 해줬더라도, 알고 보니 안전한 요청이 아니라고 판단되면 해당 응답을 버린다. 그렇기 때문에 서버 간 통신에서는 이러한 정책이 전혀 적용되지 않는다는 것을 알 수 있다.
※ 참고로, 위에서 언급한 예외 상황 중 CORS 요청을 제외한 나머지 경우는 요청 시 Sec-Fetch-Mode 헤더의 값을 no-cors로 설정한다. 이는 서버가 보내준 응답에 대해 CORS 정책을 검사하지 않게 하는 대신, 해당 응답을 JavaScript 단에서 읽을 수 없도록 한다.
Origin이란
CORS에서 Origin은 출처로써 URL에서 프로토콜, 도메인, 포트 번호를 합친 부분을 의미
Ex) URL 주소가 https://it-eldorado.com:80/posts/123456?data=789#abc 일 경우
여기서 (1) 프로토콜에 해당하는 부분은 https://이고, (2) 도메인에 해당하는 부분은 it-eldorado.com
(3) 포트 번호는 :80 이다.
그래서 Origin은 https://it-eldorado.com:80
SOP (Same Origin Policy)와 CORS의 관계
SOP는 동일 출처 정책이라고 부르며, CORS 와 긴밀한 관계를 가지고 있음
(SOP와 CORS는 모두 브라우저의 보안 관련 정책)
SOP는 다른 Origin으로 요청을 보낼 수 없도록 금지하는 브라우저의 기본적인 보안 정책
동일한 Origin으로만 요청을 보낼 수 있게 하는 것
옛날에는 다른 Origin으로 요청을 보내는 건 애초에 불가능했는데, 기술이 발달하면서 서로 다른 Origin끼리 데이터를 주고받아야하는 일이 많아졌고 이로인해 SOP는 별도의 예외 사항을 두게 되었음
Origin = protocol + host
https://www.youtube.com/watch?v=j2Q2Ev6CZzQ
https://it-eldorado.tistory.com/163
[Web] CORS (Cross Origin Resource Sharing) 이해하기
이번 포스팅에서 다룰 내용은 바로 CORS(Cross Origin Resource Sharing)이다. 웹 개발자라면 한 번쯤은 CORS와 관련하여 콘솔에 뜨는 빨간 글씨의 에러 때문에 짜증 났던 적이 있을 것이다. 하지만 CORS 정책
it-eldorado.tistory.com
[Web] CORS 동작 방식과 해결 방법
교차 출처 리소스 공유(Cross-Origin Resource Sharing)에 대해 알아보자.
ingg.dev