>웹 프론트엔드 >JS 튜토리얼 >CORS(Cross-Origin Resource Sharing)에 대한 HTTP 요청을 사전 실행하는 방법은 무엇입니까?

CORS(Cross-Origin Resource Sharing)에 대한 HTTP 요청을 사전 실행하는 방법은 무엇입니까?

Patricia Arquette
Patricia Arquette원래의
2024-10-18 21:54:311051검색

How to Preflight an HTTP Request for Cross-Origin Resource Sharing (CORS)?

CORS: 사전 실행 HTTP요청

CORS(Cross-Origin Resource Sharing)는 도메인 간 HTTP 요청에 제한을 둡니다. 이러한 문제를 해결하기 위해 실행 전 요청을 사용할 수 있습니다. 이 맥락에서 실행 전 요청에는 실제 요청이 이루어지기 전에 서버에 OPTIONS 요청을 보내는 것이 포함됩니다. 이를 통해 서버는 요청이 허용되는지 확인하고 필요한 권한을 제공할 수 있습니다.

요청을 프리플라이트하는 방법

HTTP 요청을 프리플라이트하려면 OPTIONS 요청을 보내는 것이 포함됩니다. 실제 요청에 대해 원하는 메소드와 헤더를 나타내는 특정 헤더를 사용합니다. 서버는 요청 권한을 부여하거나 거부하는 헤더로 응답합니다.

서버측 실행 전 응답

서버는 다음 헤더를 사용하여 실행 전 요청에 응답해야 합니다.

  • Access-Control-Allow-Origin: 실제 요청이 허용된 도메인.
  • Access-Control-Allow-Methods: 실제 요청에 허용되는 메소드.
  • Access-Control-Allow-Headers: 실제 요청에 허용되는 헤더입니다. 이 헤더는 '*'일 수 없습니다.

클라이언트 측 프리플라이트 요청

jQuery에서는 다음 기술을 사용하여 요청을 프리플라이트할 수 있습니다.

<code class="javascript">$.ajax({
  url: yourUrl,
  type: 'OPTIONS',
  success: function(data, status) {
    // Extract and verify the preflight response headers
    var origin = data.getResponseHeader('Access-Control-Allow-Origin');
    var methods = data.getResponseHeader('Access-Control-Allow-Methods');
    var headers = data.getResponseHeader('Access-Control-Allow-Headers');
    // Proceed with the actual request only if permissions are granted
    if (origin === 'http://mydomain.com' && methods.indexOf('POST') !== -1 && headers.indexOf('X-Custom-Header') !== -1) {
      // Make the actual request
    } else {
      // Handle the error and deny the request
    }
  }
});</code>

이러한 변경 사항을 구현하면 교차 도메인 HTTP 요청이 실행 전 검증되고 브라우저 개입 없이 진행할 수 있는지 확인할 수 있습니다.

위 내용은 CORS(Cross-Origin Resource Sharing)에 대한 HTTP 요청을 사전 실행하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.