cs

[컴퓨터 네트워크] SOP / CORS

<Eunhak> 2024. 8. 28. 16:26

SOP (Same-Origin Policy, 동일 출처 정책)

동일 출처 정책은 브라우저에서 기본적으로 적용되는 보안 메커니즘으로, 웹 페이지가 로드된 출처(origin)와 동일한 출처에서만 자원(예: 스크립트, 데이터 등)을 불러올 수 있도록 제한합니다.

출처 (Origin)의 정의:

이 세 가지가 모두 동일해야만 동일 출처로 간주됩니다.

예시:

CORS

CORS는 웹 애플리케이션이 다른 출처에서 자원을 요청할 수 있도록 허용하는 HTTP 헤더 기반의 메커니즘입니다. CORS는 서버 측에서 설정되며, 서버가 특정 출처에 대해 자원의 접근을 허용하도록 지정할 수 있습니다.

작동 원리:

  • 프리플라이트 요청 (Preflight Request):
    • 안전하지 않은 HTTP 메서드(e.g., PUT, DELETE, PATCH)나 특정한 헤더를 사용하는 경우, 브라우저는 실제 요청을 보내기 전에 OPTIONS 메서드를 사용하여 서버에 프리플라이트 요청을 보냅니다. 이 요청을 통해 브라우저는 서버가 해당 요청을 허용하는지 확인합니다.
    • 서버가 프리플라이트 요청에 대한 긍정적인 응답을 보내면 브라우저는 실제 요청을 실행합니다.
  • 서버 응답:
    • 서버는 Access-Control-Allow-Origin 헤더를 사용하여 요청이 허용된 출처를 지정합니다.
    • 예를 들어, Access-Control-Allow-Origin: *는 모든 출처에 대해 요청을 허용한다는 의미입니다.
    • 또는 Access-Control-Allow-Origin: https://example.com와 같이 특정 출처만 허용할 수도 있습니다.

예시:

왜 필요한가?

  • CORS는 동일 출처 정책의 단점을 보완하여, 합법적인 상황에서 다른 출처의 자원에 접근할 수 있도록 합니다. 이를 통해 RESTful API 서버와 클라이언트가 다른 도메인에서 호스팅되더라도 상호 작용할 수 있습니다.