배경:
jQuery를 사용하는 AJAX POST 요청에서 사용자 정의 헤더 서버와의 통신을 향상시키기 위해 추가될 수 있습니다. 문제는 의도한 헤더 대신 일반적으로 관찰되지 않는 "Access-Control-Request-Headers" 헤더에 사용자 지정 헤더가 추가된다는 점을 관찰하는 것입니다.
설명:
브라우저가 원래 도메인이 아닌 다른 도메인으로 AJAX 요청을 보내면 브라우저는 먼저 "실행 전" 요청(OPTIONS 메서드)을 보내 서버가 사용자 정의 헤더를 허용하는지 확인합니다. 이는 XSS(교차 사이트 스크립팅) 공격을 방지하기 위해 수행됩니다.
이 실행 전 요청의 일부로 브라우저는 "Access-Control-Request-Headers" 헤더를 추가합니다. 실제 요청으로 전송되었습니다. 서버는 허용되는 사용자 정의 헤더를 지정하는 "204 No Content" 상태 코드와 "Access-Control-Allow-Headers" 헤더로 응답합니다.
해결책:
이 동작을 방지하고 POST 요청에서 직접 사용자 정의 헤더를 설정하려면 jQuery Ajax 호출의 "beforeSend" 함수에서 헤더를 명시적으로 설정할 수 있습니다. 이렇게 하면 실행 전 요청 프로세스를 우회하여 요청이 전송되기 전에 요청에 헤더가 추가됩니다.
다음은 jQuery Ajax 호출에서 헤더를 설정하는 방법에 대한 예입니다.
$.ajax({ type: "POST", beforeSend: function(request) { request.setRequestHeader("Authority", authorizationToken); }, url: "entities", data: "json=" + escape(JSON.stringify(createRequestObject)), processData: false, success: function(msg) { $("#results").append("The result =" + StringifyPretty(msg)); } });
"beforeSend" 함수에 헤더를 설정하면 jQuery가 실제 POST 요청에 "Authority" 헤더를 추가하여 사용자 정의 헤더를 전달하고 예상되는 서버 응답을 받을 수 있습니다.
위 내용은 jQuery AJAX POST 요청의 'Access-Control-Request-Headers' 헤더에 사용자 정의 헤더 설정을 방지하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!