[CORS] Origin 헤더는 언제 추가될까? (feat. 흔히 저지르는 실수들)
여태 Origin 헤더는 브라우저가 자동으로 항상 추가한다고 알고 있었는데,
실무를 하다가 Origin 헤더를 브라우저가 추가하지 않는 경우를 발견하게 되었다.

궁금한건 절대 못참지!!!
Origin Header 는 언제 브라우저에 의해서 추가가 될까?
1. Cross Origin 요청일 때
2. Same Origin 이나 GET, HEAD 를 제외한 메소드 일 때
Origin - HTTP | MDN
The Origin request header indicates the origin (scheme, hostname, and port) that caused the request. For example, if a user agent needs to request resources included in a page, or fetched by scripts that it executes, then the origin of the page may be incl
developer.mozilla.org
CORS 필터를 구현할 때 흔히 하는 실수들
1. Access-Control-Allow-Origin 헤더에 2개 이상의 Value 를 삽입. (또는 정규식)

대부분의 브라우저에서 Access-Control-Allow-Origin 헤더에 정규식 및 Multiple Value 를 지원하지 않는다.
따라서 보통 아래와 같이 동작하게 된다.
Access-Control-Allow-Origin : *
WhiteList 를 만들어 요청 Origin 의 도메인이 허용된 도메인이라면 Origin 의 헤더 값을 똑같이 내려주도록 구현 해야한다.
2. Origin 헤더가 없으면 Exception

CORS 는 브라우저의 정책이다.
즉, 서버는 올바른 요청이라면 항상 200 OK 를 내려준다는 이야기다.
단지 브라우저에서 Consume 을 하여 Client 까지 도달하지 못하게 하는 것이다.
따라서, 위와 같이 Exception 처리를 한다면 ServerSide to ServerSide 통신이 막힐 수도 있다.
서버간의 리소스 보호는 서버끼리 합의한 또 다른 헤더(ex_ X-authorization)를 사용하여 보호한다.
SOP 와 CORS 정책
[Network] SOP 와 CORS Policy
CSRF 와 XSS 같은 방법을 사용하여, 어플리케이션에서 사용자의 정보를 탈취하는 것을 막기 위한 정책들 브라우저 단에서 적용되는 정책이다. 서버간의 통신에는 적용되지 않는다. # SOP(Same-Origin Po
developer-ping9.tistory.com