programing

모든 jQuery AJAX 요청에 사용자 지정 http 헤더 추가

topblog 2023. 9. 15. 20:40
반응형

모든 jQuery AJAX 요청에 사용자 지정 http 헤더 추가

명확한 점:jQuery ajax call에 custom 헤더를 추가하는 데 문제가 없습니다. 모든 ajax call에 custom 헤더를 자동으로 추가하고 싶습니다.

jquery $.ajax custom http headers 문제(내 질문이 아님)를 살펴보면 각 ajax 호출에 대해 수작업으로 구현할 경우 코드가 어떻게 작동하는지에 대한 꽤 좋은 예를 볼 수 있을 것입니다.

모든 jQuery ajax 호출에 대해 보내기 전에 재정의하고 싶습니다.jQuery 문서에 따르면 jQuery.jaxSetup()을 사용하여 이 작업을 수행할 수 있지만, 예상치 못한 동작을 일으킬 수도 있다는 경고 메시지가 표시됩니다.이런 종류의 글로벌 콜백의 경우 .ajaxStart()를 사용하는 것이 좋습니다. .ajaxStart()는 XHR을 노출하지 않으므로 헤더를 추가할 수 있습니다.

ajaxSetup을 사용하여 보내기 전에 추가하면 됩니까?ajaxStart에서 XHR에 접속할 수 있는 방법이 있습니까?다른 선택지는?

프리필터가 이를 수행하는 쉬운 방법이 될 것입니다.

$.ajaxPrefilter(function( options ) {
    if ( !options.beforeSend) {
        options.beforeSend = function (xhr) { 
            xhr.setRequestHeader('CUSTOM-HEADER-KEY', 'CUSTOM-HEADER-VALUE');
        }
    }
});

이렇게 하면 특정 요청이 beforeSend 옵션을 재정의하지 않는 한 모든 요청이 사용자 지정 헤더를 가져옵니다.

그러나 axSetup을 사용하여 동일한 목표를 달성할 수 있습니다. 경고가 있는 유일한 이유는 경고를 사용하면 모든 ax 요청에 영향을 미쳐 특정 요청에 해당 옵션 집합이 필요하지 않은 경우 원하지 않는 결과가 발생할 수 있기 때문입니다.아약스 셋업을 사용하는 것이 좋을 것 같습니다. 그것이 결국 거기에 있는 이유입니다.

ajax global event ajaxSend()를 사용할 수 있습니다.

$( document ).ajaxSend(function( event, jqxhr, settings ) {
    jqxhr.setRequestHeader(name, value)
});

데모: Fiddle

언급URL : https://stackoverflow.com/questions/20356374/add-custom-http-header-to-all-jquery-ajax-requests

반응형