origin(출처)의 정의
주소의 세 요소가 모두 같아야 같은 출처:
https://example.com:443
프로토콜 호스트 포트
하나라도 다르면 cross-origin이다. (경로·쿼리는 출처와 무관)
| 기준: https://example.com | 관계 | 이유 |
|---|---|---|
| https://example.com/page | same | 경로만 다름 |
| http://example.com | cross | 프로토콜 |
| https://api.example.com | cross | 호스트(서브도메인도 다른 출처) |
| https://example.com:8080 | cross | 포트 |
왜 막나 (Same-Origin Policy)
- 악성 사이트가, 내가 로그인해둔 다른 사이트의 데이터를 몰래 읽는 걸 막기 위함
- 그래서 브라우저는 다른 출처로의 접근을 기본 차단한다
넘는 법 — CORS
- 서버가 응답 헤더로 "이 출처는 허용"이라고 알려주는 방식
Access-Control-Allow-Origin에 허용할 출처를 명시- 즉 차단을 푸는 주체는 프론트가 아니라 서버
정리
- cross-origin은 "위험"이 아니라 브라우저의 기본 보안 경계
- 넘으려면 서버가 CORS로 열어줘야 하고, 프론트 코드만으론 못 뚫는다