2012-08-10 2 views
2

저는 리디렉션 URL 인 나머지 전화에서 저에게 전달되는 URI가 있습니다. 헤더에서 리디렉션 '위치'를 얻기 위해 전화를 가로 채길 원합니다.리디렉션 URL의 헤더에서 가로 채어 위치를 얻는 방법은 무엇입니까?

다음 코드는 위치 헤더에 대해 null을 반환합니다. 이 클라이언트 측을 수행하는 적절한 방법은 무엇입니까?

$(document).ready(function() { 
    $.ajax({ 
     url: 'http://myserver.com/redirect?token=AAAnY13Y-76LZ4zXDOd', // obviously not cross domain and contains redirect location to a youtube link to embed in my page, http://www.youtube.com/embed/bl2j345-xy 
     data: { 
      something: 'someotherthing' 
     }, 
     complete: function (request, status) { 
      var location = request.getResponseHeader("Location"); // this is null...it shows up in Fiddler as http://www.myotherserver.com in the Location Header 
     }, 
     error: function (request, error) { 
      alert(request.responseText); 
     } 
    }); 
}); 
+0

가능한 복제본 [jQuery Ajax 호출 후 리디렉션 요청을 관리하는 방법] (http://stackoverflow.com/questions/199099/how-to-manage-a-redirect-request-after-a-jquery- ajax-call) 관련 항목 : http://stackoverflow.com/q/282429/995876 – Esailija

+0

나는 그것이 단지 나를위한 것이지 모르겠지만'status' ='error'. 이것이 응답 헤더가없는 이유 일 수 있습니까? – Nope

+0

@ FrançoisWahl : 사실입니다. 방금 확인했는데 상태가 잘못되었습니다. 전에는 작동했지만 틀렸을지라도 request.responseText는 비어 있습니다. – JaJ

답변

0

합니다. 나는 약간의 콘솔 출력을 추가하여 디버깅을 위해 코드를 업데이트 했으므로 현재 오류가 항상 발생합니다 : NETWORK_ERR: XMLHttpRequest Exception 101.

빈 헤더의 원인 일 수 있다고 생각되는 주요 변경 사항은 async: false입니다. 이것은 요청이 완료되기 전에 되돌아 가지 않기를 바라는 한 중요합니다. 지정하지 않으면 기본 설정은 async: true이며, 이로 인해 ajax 호출이 즉시 반환되어 호출이 성공하더라도 응답 헤더가 표시되지 않습니다.

또한 간단한 디버그로 success: function... 콜백을 추가하여 거기에 들어가면 잡히지 않도록했습니다.

또한 교차 도메인이 아닌 비동기 요청과 도메인 간 설정에 아약스 documentation의 일부를 체크 아웃 :

async
Default: true
By default, all requests are sent asynchronously (i.e. this is set to true by default). If you need synchronous requests, set this option to false. Cross-domain requests and dataType: "jsonp" requests do not support synchronous operation.

crossDomain(added 1.5)
Default: false for same-domain requests, true for cross-domain requests
If you wish to force a crossDomain request (such as JSONP) on the same domain, set the value of crossDomain to true. This allows, for example, server-side redirection to another domain.

리디렉션이 크로스 도메인으로 간주됩니다 있는지 확실하지 않습니다하지만 난 같은데요 위의 조합이 오류 및 빈 요청 헤더의 원인입니다.

+0

쿨, 고마워! 오류-STATUSTEXT : 오류 전체 현황 : 오류 전체-STATUSTEXT : 오류 전체-ResponseHeaders : 그러나, 콘솔 당 기록과 같은 오류를받을 수 있나요 ... 오류 정보를 많이 거기가 아니다 – JaJ

+0

는 @ JaJ : 전체 및/또는 오류 콜백의 맨 위에'debugger;'행을 추가하면 스크립트가 멈추고 콘솔을 사용하여 전체 요청 객체를보고 콘솔에'request'를 입력하면됩니다 개체를 얻으려면. 크롬에서는 예를 들어 완벽한 객체 속성을 잘 살펴보고 콘솔에서 호출 할 수있는 메소드를 볼 수 있습니다. – Nope

+0

@Jaj : 호기심에서 PC의 브라우저에서 메인 URL에 직접 액세스 할 수 있습니까? 또한 Windows 인증을 사용하는 인트라넷 사이트로 실행하고 있습니까? 코드가 URL에 액세스하려고 할 때 액세스 문제가있을 수 있습니까? 나는 단지 큰 소리로 생각하고있다 :) – Nope

관련 문제