it-source

모든 AJAX 요구에 대해 글로벌헤더를 설정할 수 있습니까?

criticalcode 2023. 3. 22. 21:39
반응형

모든 AJAX 요구에 대해 글로벌헤더를 설정할 수 있습니까?

이것은 동작하지 않는 것 같습니다.

$.ajaxSetup({
  headers: {
    Accept: 'application/vvv.website+json;version=1 ',
    Authorization: 'Token token=\"FuHCLyY46\"'
  }
});

그럴 줄 알았어요.이러한 필터를 특별히 AJAX 콜에 추가하면 동작합니다.모든 AJAX 콜에 대해 글로벌하게 이 작업을 수행합니다.

저는 몇 가지 테스트를 더 해봤는데 당신이 올린 코드가 완벽하게 작동합니다.파라미터의 설정방법에 문제가 있는 경우 항상 beforeSend call로 이동하여 xml 요구를 직접 변경할 수 있습니다.

$.ajaxSetup({
    beforeSend: function (xhr)
    {
       xhr.setRequestHeader("Accept","application/vvv.website+json;version=1");
       xhr.setRequestHeader("Authorization","Token token=\"FuHCLyY46\"");        
    }
});

또한 오픈 메서드를 monkey-patch함으로써 프레임워크에 구애받지 않는 방법으로 이를 수행할 수도 있습니다.

var o = XMLHttpRequest.prototype.open;
XMLHttpRequest.prototype.open = function(){
  var res = o.apply(this, arguments);
  var err = new Error();
  this.setRequestHeader('X-Ajax-Stack', JSON.stringify(err.stack));
  return res;
}

이 예에서는 헤더를 통해 스택트레이스 정보를 전송하고 있습니다.이를 통해 백엔드는 jQuery를 사용하지 않는 서드파티 코드에서도 Ajax 요구가 어디서 발생했는지 알 수 있습니다.

(주의: 헤더가 너무 커질 수 있으므로 주의)

beforeSend답변이 동일하지 않다header는 추가와 같습니다.headerAjax 콜에 직접 접속합니다.따라서 jQuery가 이를 올바르게 수행하기 위해 다음과 같이 추가합니다.

headers: myGlobalHeaders

어디에myGlobalHeaders는 글로벌 변수입니다.불행히도, 모든 에이잭스 콜마다 이 추가 줄을 써야 해요.끔찍해!이 문제를 처리하기 위해 jQuery 프레임워크를 편집할 수도 있습니다.

언급URL : https://stackoverflow.com/questions/14527360/can-i-set-a-global-header-for-all-ajax-requests

반응형