CORS(Cross-Origin Resource Sharing)에 대해서

citron03·2022년 1월 28일
0

html, css, js

목록 보기
18/43
  • CORS는 추가적인 HTTP header로 어떤 origin의 허가를 받았는지 확인한다.
    🥜 과거 서버-클라이언트는 서버에서 클라이언트를 내려받은 후에 클라이언트로 서버와 통신했다. 따라서 의심의 여지가 없었다. (same origin request)
    🍔 하지만 최근의 고도화된 웹(SPA)에서는 여러곳에 있는 리소스를 활용할 필요가 생겼다.
    (유튜브, 깃헙, 슬랙 등 / cross origin request)
  • 처음 전송되는 리소스의 도메인과는 다른 도메인으로 리소스가 요청된 경우, 해당 리소스는 cross-origin HTTP 요청에 의해 요청된다.
  • 보안을 위해서 cross-origin HTTP request는 스크립트안에서 실행된다.
  • 서버에서는 허용되지 않은 도메인의 리소스 요청에 대해서 거부하고, 웹 브라우저가 사용자를 보호하기 위한 정책이기도 하다.
    🫑 same-origin requests는 항상 허락한다.
    🧅 cross-origin requests는 CORS에 의해서 통제된다.
    ex) Fetch를 사용할 때, XMLHttpRequest를 사용할 때.

Cross-Origin resource sharing

  • cross origin에서 서버 자원을 요청해 사용한다.

  • 보안상의 이유로 cross origin (도메인)의 요청은 기본적으로 제한되어 있다.

  • 서버가 허용한 범위 내에서 cross-origin 요청이 가능하다.

  • 서버가 허용하는 조건들을 사전에 다 맞췄는지 서버에 확인하는 요청을 한다.
    🍱 OPTIONS 메소드. (preflight request)

  • OPTIONS에 대한 정상 응답을 받으면, 원하는 HTTP 메소드의 요청을 보낸다.

  • 거절 응답을 받으면, 리소스 요청을 할 수 없다. (400 bad request)

CORS HTTP 요청은 프로토콜과 도메인(하위 도메인까지 포함), 포트를 검증한다.

profile
🙌🙌🙌🙌

0개의 댓글