서로 다른 도메인 간에 데이터를 주고받는 다양한 CORS 패턴들을 알아보세요.

서로 다른 도메인 간에 데이터를 주고받을 때, 보안 상의 이유로 Same-Origin Policy라는 정책에 따라 기본적으로 접근이 제한됩니다. 하지만 Cross-Origin Resource Sharing (CORS) 이라는 기술을 사용하여 이 제한을 우회할 수 있습니다.

CORS 패턴은 다양한 방식으로 구현될 수 있으며, 여기에는 몇 가지 일반적인 패턴이 포함됩니다.

1. 단일 도메인에서 다른 도메인으로 요청을 전송하는 패턴

이 패턴은 단일 도메인에서 다른 도메인으로 요청을 보내기 위해 다음과 같은 절차를 따릅니다.

  1. 클라이언트에서 요청을 보낼 서버에 대해 Access-Control-Allow-Origin 헤더를 설정합니다.
    • 이 헤더에는 클라이언트 도메인을 허용하는 값이 포함되어야 합니다. 예를 들어, 모든 도메인을 허용하려면 Access-Control-Allow-Origin: *를 설정할 수 있습니다.
    • 이 헤더는 서버에서 응답을 받을 때 해당 도메인이 허용되는지를 확인하기 위해 사용됩니다.
  2. 클라이언트에서 요청을 보내기 전에 Origin 헤더에 자신의 도메인을 설정합니다.
    • 이 헤더는 클라이언트 도메인을 서버에 알리기 위해 사용됩니다.
  3. 클라이언트에서 실제 요청을 보냅니다. 이때 서버는 Access-Control-Allow-Origin 헤더를 검사하여 허용된 도메인인지 확인합니다.

2. 사전 요청을 사용하는 패턴

이 패턴은 브라우저에서 사전 요청 (Preflight Request)을 사용하여 사전에 요청을 전송하고, 그 후에 실제 요청을 전송하는 방식입니다.

  1. 클라이언트에서 사전 요청을 보내기 위해 OPTIONS 메서드를 사용합니다.
    • 이 메서드는 서버에서 어떤 요청이 허용되는지 확인하기 위해 사용됩니다.
    • Access-Control-Request-Method 헤더를 통해 실제 요청에 사용되는 메서드를 지정해야 합니다.
  2. 서버에서 사전 요청을 받았을 때, 허용된 메서드인지 확인한 후, Access-Control-Allow-Methods 헤더를 통해 허용된 메서드 목록을 전송합니다.
  3. 클라이언트에서 실제 요청을 보내기 전에, Access-Control-Request-Headers 헤더를 통해 실제 요청에 포함될 헤더 목록을 지정합니다.
  4. 서버에서 실제 요청을 받았을 때, Access-Control-Allow-Headers 헤더를 통해 허용된 헤더 목록을 전송합니다.

이외에도 다양한 CORS 패턴들이 있으며, 이는 사용하는 기술 및 상황에 따라 다를 수 있습니다. CORS 패턴을 사용하여 서로 다른 도메인 간에 데이터를 교환하는 경우, 보안과 호환성을 유지하기 위해 주의해야 합니다.