2014-01-11 89 views
4

也請您查看底部

我更新我必須在Chrome瀏覽器跨域jQuery.ajax GET請求一些問題。

預戰鬥時間非常長(最多20秒),而在Firefox中運行良好。

我嘗試了不同的提示(例如啓用異步),但我無法管理。響應是一個json對象數組,不是很大(只有幾個字節)。

這個問題似乎只在第一次打電話。我做了一個再次執行請求的函數。它由成功處理程序執行。在從最少12秒開始的第一次延遲之後,請求執行正常。

我已經嘗試過不同版本的jQuery(因爲Iam第一次使用2.0.3)。

我登錄了服務器。正如所想象的那樣,OPTION請求不會執行長達20秒。沒有服務器問題。服務器完全根據延遲識別命令並執行GET方法。

對於頁面載入2014-01-11 14時59分00秒我的日誌輸出以下:

2014-01-11 14:59:14 - log.txt - "OPTIONS /unit/IO/*?_=1389452340572 HTTP/1.1" 200 - 
2014-01-11 14:59:14 - log.txt - "GET /unit/IO/*?_=1389452340572 HTTP/1.1" 200 - 
2014-01-11 14:59:14 - log.txt - "OPTIONS /unit/IO/*?_=1389452340573 HTTP/1.1" 200 - 
2014-01-11 14:59:14 - log.txt - "GET /unit/IO/*?_=1389452340573 HTTP/1.1" 200 - 

這是我的AJAX調用:

$.ajax({ 
url: <<crossdomain>>, 
type: 'GET', 
contentType:'application/json', 
async:true, 
    cache:false, 
beforeSend: function (request) 
    { 
    request.setRequestHeader("Authorization", 'Basic ' + encodedData); 
},   
success: function(response) { 
     alert(response) 
} 
}); 

請求頭(鉻):

Accept:*/* 
Accept-Encoding:gzip,deflate,sdch 
Accept-Language:de-DE,de;q=0.8,en-US;q=0.6,en;q=0.4 
Access-Control-Request-Headers:accept, authorization, content-type 
Access-Control-Request-Method:GET 
Cache-Control:max-age=0 
Connection:keep-alive 
DNT:1 
Host:<<crossdomain>> 
Origin:<<thisdomain>> 
Referer:<<directpathonthisdomain>> 
User-Agent:Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/31.0.1650.63 Safari/537.36 

迴應標題(鉻):

Access-Control-Allow-Headers:Authorization 
Access-Control-Allow-Headers:Accept 
Access-Control-Allow-Headers:Content-Type 
Access-Control-Allow-Headers:Accept-Language 
Access-Control-Allow-Methods:POST, GET, OPTIONS 
Access-Control-Allow-Origin:* 
Cache-Control:no-cache 
Content-Type:application/json 
Date:Sat, 11 Jan 2014 13:28:32 GMT 
Server:Python3.2 

這是針對第一呼叫網絡業務:

鉻:

OPTION

DNS Lookup: 0 ms 
Connecting: 3 ms 
**Waiting: 17.44s** 
Receiving 2 ms 

GET

DNS Lookup: 0 ms 
Connecting: 2 ms 
Sending: 0 ms 
Waiting: 46 ms 
Receiving 1 ms 

爲了比較Firefox的日誌:

OPTION

DNS Lookup: 0 ms 
Waiting: 10 ms 
Receiving 5 ms 

GET

DNS Lookup: 0 ms 
Waiting: 41 ms 
Receiving 3 ms 

編輯: 如果Iam直接打開html文件(file:///)並且不在本地/遠程服務器上託管,則不存在任何問題。

編輯2: 它在鉻無痕模式下工作 - 可能緩存問題?

+0

我也遇到了這個問題。如你所說,它在Incognito和Firefox中運行良好。我希望有人能提供一個解釋/解決方案。 – kevinAlbs

+0

嗨凱文,我仍然在尋找解決方案。這個問題也出現在最新的Canary Build of Chrome中。 – user1532132

+0

你有沒有找到解決方案?我甚至嘗試了一個簡單的XMLHttpRequest() - >相同的結果 – user1532132

回答

0

也許您可以將下一個標頭添加到您的ajax請求中。

headers: { 
    "Cache-Control" : "no-cache, no-store, must-revalidate", 
    "Pragma": "no-cache", 
    "Expires", "0" 
} 
6

我有同樣的問題。在Chrome的高級設置中禁用了「預測網絡操作以提高網頁加載效果」這一選項後,延遲消失了。

+0

適合我!非常感謝Garret! – edsioufi