>  기사  >  웹 프론트엔드  >  비행 전 확인을 실행하지 않고 AJAX POST 요청에 사용자 정의 헤더를 어떻게 포함합니까?

비행 전 확인을 실행하지 않고 AJAX POST 요청에 사용자 정의 헤더를 어떻게 포함합니까?

Susan Sarandon
Susan Sarandon원래의
2024-11-07 19:08:02467검색

How do I include custom headers in an AJAX POST request without triggering a pre-flight check?

액세스 제어 요청 헤더: 비행 전 검사 이해

jQuery를 사용하여 AJAX POST 요청을 생성할 때 요청 동작을 제어하기 위해 사용자 정의 헤더를 포함할 수 있습니다. . 그러나 교차 출처 요청에서 CORS(액세스 제어 요청 헤더)의 역할을 이해하는 것이 중요합니다.

기본적으로 jQuery는 실행 전 확인을 시작하기 위해 교차 출처 요청 앞에 OPTIONS 요청을 붙입니다. . 이 검사를 통해 서버가 원래 요청에 포함된 특정 HTTP 메서드와 헤더를 허용하는지 확인합니다. 이 실행 전 확인 중에 jQuery는 원래 요청에 있는 사용자 정의 헤더를 지정하는 Access-Control-Request-Headers 헤더를 요청에 자동으로 추가합니다.

제공된 예에서:

$.ajax({
    ...
    headers: {
        "My-First-Header":"first value",
        "My-Second-Header":"second value"
    }
    ...
})

요청 매개변수에는 두 개의 사용자 정의 헤더가 포함되어 있습니다. 실행 전 확인이 시작되면 브라우저는 자동으로 요청 헤더를 다음과 같이 수정합니다.

...
Access-Control-Request-Headers: My-First-Header,My-Second-Header
...

이렇게 하면 서버가 실제 POST 요청에 포함될 사용자 정의 헤더를 인식할 수 있습니다. 그러나 사용자 정의 헤더 자체는 비행 전 확인 요청에 존재하지 않습니다.

실제 POST 요청에 사용자 정의 헤더를 포함하려면 다음과 같이 beforeSend 함수를 사용할 수 있습니다.

$.ajax({
    ...
    beforeSend: function(xhr) {
        xhr.setRequestHeader("My-First-Header", "first value");
        xhr.setRequestHeader("My-Second-Header", "second value");
    }
    ...
})

이 경우 비행 전 확인을 실행하지 않고 사용자 정의 헤더가 POST 요청에 직접 포함됩니다. 교차 출처 요청의 경우 서버는 Access-Control-Allow-Headers 응답 헤더에 지정된 헤더를 명시적으로 허용해야 합니다.

위 내용은 비행 전 확인을 실행하지 않고 AJAX POST 요청에 사용자 정의 헤더를 어떻게 포함합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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