Network Basis
[CORS] Origin 헤더는 언제 추가될까? (feat. 흔히 저지르는 실수들)
DevPing9_
2022. 12. 19. 19:44
여태 Origin 헤더는 브라우저가 자동으로 항상 추가한다고 알고 있었는데,
실무를 하다가 Origin 헤더를 브라우저가 추가하지 않는 경우를 발견하게 되었다.
궁금한건 절대 못참지!!!
Origin Header 는 언제 브라우저에 의해서 추가가 될까?
1. Cross Origin 요청일 때
2. Same Origin 이나 GET, HEAD 를 제외한 메소드 일 때
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 정책
728x90