programing

JS/jQuery가 HTTP 요청 요청 헤더를 얻습니까?

goodsources 2023. 9. 23. 22:32
반응형

JS/jQuery가 HTTP 요청 요청 헤더를 얻습니까?

xhr 개체에서 getAllResponseHeaders를 사용하면 ajax 호출 후에 모든 응답 헤더를 가져올 수 있습니다.그런데 요청 헤더 문자열을 받을 방법을 찾을 수가 없는데 가능한가요?

디버깅 목적인 경우 Firebug 또는 Chrome Developer Tools(및 IE에서 호출하는 기능)를 사용하여 브라우저에서 서버로의 네트워크 트래픽을 검사할 수 있습니다.

다른 방법으로는 다음과 같은 스크립트를 사용하는 것이 있습니다.

$.ajax({
    url: 'someurl',
    headers:{'foo':'bar'},
    complete: function() {
        alert(this.headers.foo);
    }
});

그러나 이미 정의된 머리글만headers를 사용할 수 있습니다(헤더가 변경되면 어떻게 되는지 확실하지 않습니다(예: Send 전에).

jQuery ajax에 대해서는 http://api.jquery.com/jQuery.ajax/ 에서 좀 더 자세히 읽을 수 있습니다.

편집: setRequest를 설정할 모든 호출에서 헤더만 잡으려면XMLHttpRequest에서 헤더를 사용하면 해당 메서드를 래핑할 수 있습니다.이것은 약간의 해킹이며 물론 요청이 발생하기 전에 아래 기능 래핑 코드가 실행되는지 확인해야 합니다.

// Reasign the existing setRequestHeader function to 
// something else on the XMLHtttpRequest class
XMLHttpRequest.prototype.wrappedSetRequestHeader = 
  XMLHttpRequest.prototype.setRequestHeader; 

// Override the existing setRequestHeader function so that it stores the headers
XMLHttpRequest.prototype.setRequestHeader = function(header, value) {
    // Call the wrappedSetRequestHeader function first 
    // so we get exceptions if we are in an erronous state etc.
    this.wrappedSetRequestHeader(header, value);

    // Create a headers map if it does not exist
    if(!this.headers) {
        this.headers = {};
    }

    // Create a list for the header that if it does not exist
    if(!this.headers[header]) {
        this.headers[header] = [];
    }

    // Add the value to the header
    this.headers[header].push(value);
}

일단 머리글이 설정되면XMLHttpRequest예를 들어, 우리는 그들을 조사함으로써 꺼낼 수 있습니다.xhr.headers예.

var xhr = new XMLHttpRequest();
xhr.open('get', 'demo.cgi');
xhr.setRequestHeader('foo','bar');
alert(xhr.headers['foo'][0]); // gives an alert with 'bar'

Sinon의 FakeXMLHtpRequest를 사용하여 브라우저의 XHR을 대체할 수 있습니다.테스트에 사용하는 방법에 대해서는 이 문서에 설명되어 있지만 디버깅 목적으로 모듈을 사용할 수 있다고 확신합니다.

당신이 해야 할 일은 다음과 같습니다.

var requests;
this.xhr = sinon.useFakeXMLHttpRequest();
this.xhr.onCreate = function(xhr) {
    requests.push(xhr);
}

그리고 나중에 확인할 수 있습니다.requests머리글 배열 기준:

console.log(requests[0].requestHeaders);

요청 헤더에 액세스합니다.

언급URL : https://stackoverflow.com/questions/10515862/js-jquery-get-httprequest-request-headers

반응형