2011-06-13 43 views
5

我在使用jquery的307 Temporary Redirect statusCode有很多麻煩。如何處理statuscode 307與jquery重定向

我有一個apache服務器,在需要時返回一個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從來沒有觸發(在success也不error處理)

有一件事我使用Firebug檢查交通是重定向之後一個Ajax GET被髮送到服務器的網址時,發現的重定向!然而,這導致失敗。

那麼,什麼給了?

編輯: 我想這與jQuery 1.5.1和1.6.1

+0

確保您的HTTP響應正文至少包含一個空格。這將有助於瀏覽器更好地行事。有一個Firefox附加電話「Live HTTP Headers」可能有助於調試。你正在使用jQuery v 1.5或更高版本,對嗎? – Teddy 2011-06-13 15:40:29

+0

@泰迪。我試着用jQuery 1.5.1和1.6.1。此外,整個重定向html頁面將與307一起返回 – Darcy 2011-06-13 15:43:58

回答

4

嗯,我做了一些調查研究,它似乎是一個307自動由瀏覽器來處理,而不能被jquery攔截。

我結束了使用不同的statusCode做重定向(410 Gone)。

這可能不是最好的解決方案,但我沒有訪問Apache服務器代碼。