항해99/TIL | WIL

WIL (6주)

태감새 2023. 2. 26. 23:53

CORS (Cross Origin Resource Sharing)

CORS를 알기 위해서는 우선 Orgin과 SOP를 알아야 한다.

Origin

URL에서 프로토콜, 도메인, 포트 번호를 합친 부분이다.

SOP (Single Origin Policy)

다른 오리진으로 요청을 보낼 수 없도록 하는 기본적인 브라우저의 보안 정책이다. 원래는 다른 오리진으로 요청을 보낼수가 없다. 하지만 시간이 흐르면서 다른 오리진들 간의 소통이 필요해졌고 이를 위해서 CORS가 등장했다. CORS설정으로 필요한 경우에만 서로 다른 Origin끼리 소통을 할 수 있다. 

 

CORS는 기본적으로 브라우저의 정책이다. 브라우저가 자신이 보낸 요청과 서버로부터 받은 응답을 비교하고 버릴지 받아올지를 판단한다. 서버는 그냥 요청이 오면 응답을 해줄 뿐이다. 

 

동작원리

프리플라이트

실제로 요청을 보내기 전에 예비 요청에 해당하는 요청이다. 프리플라이트 요청의 응답이 안전하다고 확인된다면 실제 요청을 보낸다.  HTTP메서드는 OPTION이고 Origin헤더에 자신의 Origin을 설정한다. 이럴 때 서버는 어떻게 응답해야 할까?

  • Access-Control-Allow-Origin 헤더에 허용되는 Origin들의 목록 혹은 와일드카드(*)를 설정한다.
  • Access-Control-Allow-Methods 헤더에 허용되는 메소드들의 목록 혹은 와일드카드(*)를 설정한다.
  • Access-Control-Allow-Headers 헤더에 허용되는 헤더들의 목록 혹은 와일드카드(*)를 설정한다.
  • Access-Control-Max-Age 헤더에 해당 프리플라이트 요청이 브라우저에 캐시 될 수 있는 시간을 초 단위로 설정한다.

인증정보를 포함한 요청

인증정보를 보내기 위해서는 별도의 설정이 필요하다.

  • 응답의 Access-Control-Allow-Origin 헤더가 와일드 카드가 아닌 분명한 Origin으로 설정되어야 한다.
  • Access-Control-Allow-Credential 헤더는 true로 되어있어야 한다.

 

'항해99 > TIL | WIL' 카테고리의 다른 글

2023.02.27 (50일)  (0) 2023.02.28
2023.02.27 (49일)  (0) 2023.02.27
2023.02.25 (48일)  (0) 2023.02.26
2023.02.24 (47일)  (0) 2023.02.25
2023.02.23 (46일)  (0) 2023.02.23