동일 출처 정책
웹 브라우저 보안을 위한 기본 정책으로, 출처(origin)가 다른 두 리소스 간의 상호작용을 제한
Origin 이란?

추가적으로 쿠키의 same site는 origin과 다름!

프론트 서버에서 다른 서버에 백엔드가 있다면 오류 뜨는 느낌
SOP가 적용되면, 브라우저는 다른 출처에서의 요청을 제한하기 때문에, 예를 들어 아래와 같은 상황에서는 오류(CORS 에러)가 발생
http://frontend.comhttp://backend.comhttp://backend.com/api에 데이터를 요청하면 브라우저가 차단.보안을 위한 것 - CSRF, XSS 같은 사용자 정보 탈취 위험 막아줌
교차 출처 리소스 공유
다른 서버에 자원을 요청하는 매커니즘
유정피셜
origin 서버가 있는데, 비동기통신으로 다른 도메인의 서버를 불러오려고 하면, 이게 조금 이상하다는 거지!!
그러니까, 너 origin 서버야, 너가 요청보내는 서버에 허락받았니?? 라는 의미에서 CORS 정책이 존재하는 것이다!!
그래서 a 태그를 이용해서 그냥 도메인 자체를 바꿔버리는 방식이라면,
CORS 오류가 발생하지 않는다!!
CORS는 서버 입장에서는 ‘아 내 트래픽 복잡해지니까, 모두 다 허용하면 안 되겠어… 허용하는 애들한테만 요청 보내주자” 하는 거
GPT 피셜
CORS 정책은 주로 Ajax 요청(XMLHttpRequest 또는 Fetch API)과 같은 비동기 통신에서 발생!!
<a> 태그, <form> 태그, <script>, <img> 등의 태그로 요청하거나 리소스를 로드하는 경우에는 CORS의 제한을 받지 않음. 이는 브라우저가 이러한 요청을 단순히 "리소스 로드"로 간주하기 때문임
브라우저가 예비요청과 본요청으로 나누어 서버에 전송
예비 요청 때는 OPTIONS 사용 → 안전하게 전달될 수 있는지 확인
예비 요청할때 내 url을 주고 이거 어떤 http 메소드, 헤더 허락돼있어? 이거 물어보고 답해주는 거임.
예비 요청의 목적

가장 단순한 요청 → 예비 요청 안보내고 바로 본서버에 요청
이거 사용할 수 있는 경우
인증된 요청 사용하는 방법
다른 출처간 통신에서 보안 강화하기 위해 사용
credentials 라는 옵션을 통해 정보 담음
느낀점
개발할 때 프론트 - 백 첫 통신시 무조건 발생하는 문제였는데, 자세히 공부한 적은 처음인 것 같다.
이래서였구나… 를 많이 느낀 듯
그리고 CORS 동작 방식이라고 해서 프론트에서 셋 중에서 선택해서 사용하는구나 ~ 생각했는데 그게 아니라 어떻게 사용하냐에 따라 골라지는 형식이라 다른 느낌이었다.
추가적으로 더 정리해도 좋을듯함
참고자료
SOP와 CORS
[네트워크] SOP(Same Origin Policy)와 CORS(Cross-Origin Resource Sharing), CORS 오류 해결 방법