복붙노트

[JQUERY] jQuery를하고 AJAX 응답 헤더

JQUERY

jQuery를하고 AJAX 응답 헤더

해결법


  1. 1.당신이 JQuery와 이전 버전을 사용하는 경우 cballou의 솔루션은 작동합니다. 새로운 버전에서는 또한 시도 할 수 있습니다 :

    당신이 JQuery와 이전 버전을 사용하는 경우 cballou의 솔루션은 작동합니다. 새로운 버전에서는 또한 시도 할 수 있습니다 :

      $.ajax({
       type: 'POST',
       url:'url.do',
       data: formData,
       success: function(data, textStatus, request){
            alert(request.getResponseHeader('some_header'));
       },
       error: function (request, textStatus, errorThrown) {
            alert(request.getResponseHeader('some_header'));
       }
      });
    

    문서에 따르면, XMLHttpRequest의 목적은 jQuery를 1.4로 사용할 수 있습니다.


  2. 2.이것은 CORS 요청하는 경우, 당신은 (엘리먼트 -> 네트워크를 검사> 등 CHROME- 등) 디버그 도구의 모든 헤더를 볼 수 있지만, XHR 객체는 그러한 경우 (xhr.getResponseHeader ( '헤더')를 통해) 헤더를 검색합니다 헤더는 간단한 응답 헤더입니다 :

    이것은 CORS 요청하는 경우, 당신은 (엘리먼트 -> 네트워크를 검사> 등 CHROME- 등) 디버그 도구의 모든 헤더를 볼 수 있지만, XHR 객체는 그러한 경우 (xhr.getResponseHeader ( '헤더')를 통해) 헤더를 검색합니다 헤더는 간단한 응답 헤더입니다 :

    이 세트에없는 경우, 서버에 의해 반환 된 액세스 제어 - 노출 - 헤더 헤더에 있어야합니다.

    문제의 사건에 대해하는 CORS 요청이있는 경우, 하나의 단지는 XMLHttpRequest 객체의 경우를 통해 위치 헤더를 검색 할 수 및 경우에만 아래의 헤더도 존재한다 :

    Access-Control-Expose-Headers: Location
    

    그 아닌 CORS가 요청하는 경우, XMLHttpRequest의 그것을 검색 아무런 문제가 없을 것입니다.


  3. 3.

     var geturl;
      geturl = $.ajax({
        type: "GET",
        url: 'http://....',
        success: function () {
          alert("done!"+ geturl.getAllResponseHeaders());
        }
      });
    

  4. 4.AJAX와 302 리디렉션에 대한 불행한 진실은 브라우저가 결코 XHR에게 제공하지 않기 때문에 당신이 반환에서 헤더를 얻을 수 있다는 것입니다. 브라우저가 302을 볼 때 자동으로 리디렉션을 적용합니다. 브라우저를 얻었 기 때문에이 경우에, 당신은 불을 지르고의 헤더를 볼 것입니다,하지만 브라우저를 통과하지 않았기 때문에 당신은 아약스에서 볼 않을 것입니다. 성공과 오류 처리기 결코이 호출되는 이유입니다. 만 완료 핸들러가 호출됩니다.

    AJAX와 302 리디렉션에 대한 불행한 진실은 브라우저가 결코 XHR에게 제공하지 않기 때문에 당신이 반환에서 헤더를 얻을 수 있다는 것입니다. 브라우저가 302을 볼 때 자동으로 리디렉션을 적용합니다. 브라우저를 얻었 기 때문에이 경우에, 당신은 불을 지르고의 헤더를 볼 것입니다,하지만 브라우저를 통과하지 않았기 때문에 당신은 아약스에서 볼 않을 것입니다. 성공과 오류 처리기 결코이 호출되는 이유입니다. 만 완료 핸들러가 호출됩니다.

    http://www.checkupdown.com/status/E302.html

    The 302 response from the Web server should always include an alternative URL to which redirection should occur. If it does, a Web browser will immediately retry the alternative URL. So you never actually see a 302 error in a Web browser
    

    여기에 주제에 대한 몇 가지 유래 게시물입니다. 게시물 중 일부는이 문제를 해결하기 위해 해킹을 설명합니다.

    JQuery와 아약스 호출 후 리디렉션 요청을 관리하는 방법

    자바 스크립트에서 302 FOUND 잡기

    HTTP 리디렉션 : 301 (영구) 대 302 (임시)


  5. 5.항상 자동으로 리디렉션 오히려 수익보다 302 상태 코드를 따를 것이다 jQuery를에 의해 사용되는 기본 XMLHttpRequest 객체. 따라서 반환 된 URL을 얻기 위해 jQuery의 AJAX 요청 기능을 사용할 수 없습니다. 대신, 양식에 모든 데이터를 넣고은 iframe의 name 속성의 값으로 대상 속성 세트와 함께 양식을 제출해야합니다

    항상 자동으로 리디렉션 오히려 수익보다 302 상태 코드를 따를 것이다 jQuery를에 의해 사용되는 기본 XMLHttpRequest 객체. 따라서 반환 된 URL을 얻기 위해 jQuery의 AJAX 요청 기능을 사용할 수 없습니다. 대신, 양식에 모든 데이터를 넣고은 iframe의 name 속성의 값으로 대상 속성 세트와 함께 양식을 제출해야합니다

    $('#myIframe').attr('name', 'myIframe');
    
    var form = $('<form method="POST" action="url.do"></form>').attr('target', 'myIframe');
    $('<input type="hidden" />').attr({name: 'search', value: 'test'}).appendTo(form);
    
    form.appendTo(document.body);
    form.submit();
    

    서버의 url.do 페이지는 iframe에로드되지만 그 (302 개) 상태가 도착했을 때, iframe을 최종 목적지로 리디렉션됩니다.


  6. 6.이 시도:

    이 시도:

    type: "GET",
    async: false,
    complete: function (XMLHttpRequest, textStatus) {
        var headers = XMLHttpRequest.getAllResponseHeaders();
    }
    

  7. 7.UPDATE 2018 JQUERY 세 이상의 경우

    UPDATE 2018 JQUERY 세 이상의 경우

    나는이 오래된 질문은 알고 있지만 위의 방법 중 어느 것도 나를 위해 일하지 않는다. 여기서 일한 솔루션입니다 :

    //I only created this function as I am making many ajax calls with different urls and appending the result to different divs
    function makeAjaxCall(requestType, urlTo, resultAreaId){
            var jqxhr = $.ajax({
                type: requestType,
                url: urlTo
            });
            //this section is executed when the server responds with no error 
            jqxhr.done(function(){
    
            });
            //this section is executed when the server responds with error
            jqxhr.fail(function(){
    
            })
            //this section is always executed
            jqxhr.always(function(){
                console.log("getting header " + jqxhr.getResponseHeader('testHeader'));
            });
        }
    

  8. 8.1 PleaseStand에 여기 내 다른 해킹은 다음과 같습니다

    1 PleaseStand에 여기 내 다른 해킹은 다음과 같습니다

    "상호 아약스 요청"XHR 객체에서 응답 헤더를 얻을 수 없다는 것을 검색하고 발견 후, 나는 포기했다. 대신 iframe을 사용합니다.

    1. <iframe style="display:none"></iframe>
    2. $("iframe").attr("src", "http://the_url_you_want_to_access")
    //this is my aim!!!
    3. $("iframe").contents().find('#someID').html()  
    
  9. from https://stackoverflow.com/questions/1557602/jquery-and-ajax-response-header by cc-by-sa and MIT license