> 웹 프론트엔드 > JS 튜토리얼 > jQuery AJAX POST 요청의 'Access-Control-Request-Headers' 헤더에 사용자 정의 헤더 설정을 방지하는 방법은 무엇입니까?

jQuery AJAX POST 요청의 'Access-Control-Request-Headers' 헤더에 사용자 정의 헤더 설정을 방지하는 방법은 무엇입니까?

DDD
풀어 주다: 2024-11-05 14:36:02
원래의
682명이 탐색했습니다.

How to Avoid Setting Custom Headers in the

jQuery를 사용하여 AJAX POST 요청에서 복잡한 헤더 처리

배경:

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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿