IT · 인터넷/CS 지식

주경야독 - CORS 정책 위반 이슈

sunflo 2025. 4. 7. 01:37

우선 이 정책을 이해하려면 SOP에 대해 알아야 한다.

✅ SOP : Same-Origin Policy(동일 출처 정책) 

웹 브라우저에서 서로 다른 출처의 접근을 허용하지 않는 정책이다.

르게 말하면 동일한 출처끼리의 접근만 허용하는 정책이다. (난 이말이 더 이해하기 편했다.)
출처란 프로토콜(http, https), 도메인, 포트번호 이 3가지의 조합을 의미한다.
http:www.naver.com:8080 <= 이게 바로 "출처"
따라서 이 출처가 같아야만 리소스를 공유한다.

 

http:www.naver.com:8080 http:www.naver.com:1010은 출처가 달라 리소스를 공유할 수 없다.

⭐ 출처가 다르면 리소스를 공유할 수 없는 것이 웹 브라우저의 규칙임을 알아두자.

✅ CORS : Cross-Origin Resource Sharing

CORS는 SOP에서 예외를 두는 정책이다. (내 집에는 나만 들어갈 수 있어, 좋아 부모님은 예외로 할게!)

서버측에서 접근을 허용할 출처에 대해 규칙을 세워두어 그 출처는 SOP가 어긋나도 리소스를 공유할 수 있다.

응답 헤더에 다음과 같이 해주면 된다.

"Access-Control-Allow-Origin: 허용할 출처"

 

Node.js에서는 cors 미들웨어를 사용하여 CORS를 구현할 수 있다.

✅ CORS 진행 과정

1. 클라이언트가 다른 출처로 요청을 보내려고 함

2. 브라우저가 먼저 사전 요청 ( preflight ) 을 보냄

3. 서버가 응답 헤더에 "Access-Control-Allow-Origin"을 넣어줌

4. 브라우저가 허용됐는지 확인하고, 진짜 요청을 진행함

⭐ 결론

웹사이트를 만들다보면 겪게되는 CORS 이슈!

내가 JS만 할 줄 알았을 때는 너무 어려운 개념이었는데

Node.js까지 할 줄 알게된 지금은 참 쉽게 느껴지는 개념이다.

 

원래는 출처가 다르면 리소스 공유 불가능! ==> 특정 출처는 허용해서 공유 가능! 이게 CORS 정책이다

CORS 위반 에러가 발생하면 당황하지 말고 서버에서 그 출처를 허용해주자.