99클럽 TIL

99클럽 코테 스터디 24일차 Network CORS

차가리 2024. 6. 12. 17:38
728x90
  • NetWork
    • DNS
      • DNS Resolver
      • DNS란
    • Http Header
      • CORS
      • keep-alive header
      • Persistent Connection, Non-Persistent Connection
      • OSI 7 계층과 각 계층의 구성요소
      • TCP vs UDP

란?

  • 출처가 다른 자원들을 공유한다는 뜻으로, 한 출처에 있는 자원에서 다른 출처에 있는 자원에 접근하도록 하는 개념임.
    ➡️ 교차되는 출처 자원들의 공유

기본적으로 웹 브라우저는 같은 출처 정책(Same-Origin Policy) 를 사용하여, 한 출처(도메인, 프로토콜, 포트)에서 불러온 스크립트가 다른 출처의 자원에 접근하는 것을 제한함.

작동

  1. Simple Request : GET, HEAD, POST 와 같은 표준 메서드를 사용하고, Accept, Content-Type 등 제한된 헤더만을 사용하는 요청임.
    이 경우, 브라우저는 자동으로 Origin 헤더를 Request에 포함시키고, 서버는 이에 대한 응답으로 Access-Control-Allow-Origin 헤더를 보냄.
    이 헤더의 값이 요청한 출처와 일치하거나 '*' (모든 출처 허용)인 경우, 브라우저는 요청을 성공적으로 처리함.
  2. Preflight Request : PUT, DELETE 등과 같은 비표준 메서드를 사용하거나, 표준이 아닌 헤더를 사용하는 요청의 경우, 브라우저는 실제 요청을 보내기 전에 사전요청을 서버에 보냄.
    이는 OPTIONS 메서드를 사용하여 이루어지며, 서버는 이에 대해 허용 가능한 메서드, 헤더, 출처 등을 알려주는 응답을 보냄.

CORS 헤더

  • Access-Control-Allow-Origin : 이 헤더는 서버가 어떤 출처의 접근을 허용할지를 명시함. 특정 도메인, 여러 도메인, 또는 '*'를 사용해 모든 도메인을 허용할 수 있음.
  • Access-Control-Allow-Methods : 사전 요청에서 사용, 서버가 허용하는 HTTP 메서드를 명시함.
  • Access-Contro-Allow-Headers : 사전 요청에서 사용, 서버가 허용하는 헤더를 명시함.
  • Access-Control-Max-Age : 사전 요청의 결과를 캐시할 시간(초 단위) 를 명시함.
  • Access-Control-Allow-Credentials : 쿠키나 인증 관련 헤더를 요청과 함께 보낼 수 있도록 허용할지의 여부를 명시함.

중요성

CORS 는 보안과 유연성 사이의 균형을 제공함. 웹 개발에서 다양한 서비스와 자원을 통합하고, API 다른 도메인에서 안전하게 사용할 수 있도록 해줌.
그러나 잘못 구성된 CORS 정책은 보안 취약점을 초래할 수 있기 때문에 설정에 주의가 필요함.

728x90