Network Basis

[CORS] Origin 헤더는 언제 추가될까? (feat. 흔히 저지르는 실수들)

DevPing9_ 2022. 12. 19. 19:44

 

여태 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

 

 

728x90