2011-06-13 4 views
5

jquery를 사용하여 307 Temporary Redirect statusCode에 많은 문제가 있습니다.상태 코드 처리 방법 307 jquery로 리디렉션

필요한 경우 307을 반환하는 아파치 서버가 있습니다. 307이 제대로 던져지고있다. (나는 방화범이나 wireshark 추적으로 이것을 볼 수있다.) 리다이렉트를 트리거 할 수는 없다.

$.ajax({ 
    url: someURL, 
    type: 'GET', 
    processData: false, 
    data: someData, 
    cache: true, 
    timeout: 5000, 
    statusCode: { 
     307: function() { 
      alert('307'); // this does NOT get called 
     } 
    }, 
    error: function(request, status, error){ 
     try { 
      console.log(request.getAllResponseHeaders()); 
     } 
     catch (err) { } 
    }, 
    success: function(data, textStatus, response){ 
     try { 
      console.log(response.getAllResponseHeaders()); 
     } 
     catch (err) { } 
    }); 

나는 내가 getAllResponseHeaders() 방법을 사용하여 리디렉션 할 수 있도록 헤더를 확인하고 싶었다. 이것은 200의를 위해 잘 작동하지만, (307)는 결코

한 가지 내가 트래픽이 바로 리디렉션 후 아약스 GET이 URL을 사용하여 서버로 전송한다는 것입니다 검사 방화범을 사용할 때주의합니다 (successerror 핸들러에서) 트리거되지 리디렉션 중! 그러나 결과는 실패합니다.

그래서 무엇을 제공합니까?

편집 : 나는 JQuery와 1.5.1과 1.6.1

+0

HTTP 응답 본문에 최소한 공백이 있는지 확인하십시오. 브라우저가 더 잘 작동하도록 도와줍니다. Firefox 디버그에 도움이되는 'Live HTTP Headers'라는 Firefox 부가 기능 호출이 있습니다. jQuery v 1.5 이상을 사용하고 있습니까? – Teddy

+0

@ Teddy. 나는 jquery 1.5.1과 1.6.1로 이것을 시도했다. 또한 전체 리디렉션 html 페이지가 307과 함께 반환됩니다. – Darcy

답변

4

음과 함께이 시도, 좀 더 많은 연구를했고 307 브라우저에 의해 자동으로 처리하고, 할 수없는 것 같습니다 jquery에 의해 가로 챌 수 있습니다.

리디렉션 (410 Gone)을 수행하기 위해 다른 statusCode가 사용되었습니다.

이것은 아마도 최선의 해결책은 아니지만 아파치 서버 코드에 대한 액세스 권한이 없습니다.