2011-11-29 290 views
0

我遇到了一個問題,即瀏覽器未從ajax請求提交POST數據,因此服務器等待它並掛起。瀏覽器,主要是IE8將發送頭信息和內容長度是36,但服務器永遠不會收到該36字節的數據。Internet Explorer瀏覽器問題:瀏覽器未提交POST數據與Ajax請求,服務器/客戶端掛起

這也能說明問題,沒有任何人有其他的解決方案:

IE hang for 5 minutes when calling synchronous xmlhttprequest

它發生的所有請求的10%左右。

什麼會導致這個問題?有沒有辦法來防止它。這似乎主要來自客戶端。也許,用戶將切斷他們的互聯網連接並連接回去。

下面是從框架代碼片段:

檢票ajax.js: ......在客戶端 JavaScript調用:

  1. t.open( 「POST」, url,this.async);
  2. t.onreadystatechange = this.stateChangeCallback.bind(this);
  3. t.setRequestHeader(「Content-Type」,「application/x-www-form-urlencoded」);
  4. //設置一個特殊標誌以允許服務器區分ajax和非ajax請求
  5. t.setRequestHeader(「Wicket-Ajax」,「true」);
  6. t.setRequestHeader(「Accept」,「text/xml」);
  7. t.send(body);

vÝMon11月28日12時36分24秒2011 000ee03c 0000999a - 詳細信息:POST
... ÝMon11月28日12時36分24秒2011 000ee03c 0000999a - 詳細信息:接受:
文本/ XML
ÝMon11月28日12時36分24秒2011 000ee03c 0000999a - 詳細信息:
接受語言:EN-US
ÝMon11月28日12時36分24秒2011 000ee03c 0000999a - 詳細信息:檢票AJAX:

ÝMonNov 28 12:36:242011¨000ee03c 0000999a - 詳情:Referer:
https://data.com/l/launch/
ÝMon11月28日12時36分24秒2011 000ee03c 0000999a - 詳細信息:
檢票focusedelementid:id1924
ÝMon11月28日12時36分24秒2011 000ee03c 0000999a - 詳細信息:內容類型: 應用/ X WWW的窗體-urlencoded
ÝMon11月28日12時36分24秒2011 000ee03c 0000999a - DETAIL:
接受編碼:gzip,放氣
ÝMon11月28日12時36分24秒2011 000ee03c 0000999a - DETAIL :用戶代理:
Mozilla/4.0(compatible; MSIE 8.0; Windows NT 5.1;三叉戟/ 4.0; .NET CLR 2.0。50727; MS-RTC LM 8)

ÝMon11月28日12時36分24秒2011 000ee03c 0000999a - DETAIL:
的Content-Length:36
ÝMon11月28日12時36分24秒2011 000ee03c 0000999a - DETAIL:高速緩存 - 控制: 無緩存
ÝMon11月28日12點36分24秒2011 000ee03c 0000999a - 詳細信息:餅乾:
... 它發送的頭請求數據,但僅此而已。

Arch配置: 服務器:帶有IHS插件的IBM Websphere 6。 Wicket 1.4.13。的Java6。客戶端主要是Internet Explorer 8,9。兼容性和非共享模式。

+0

你看過Fiddler/Charles的請求,看看它發生了什麼?這是同步還是異步調用? – epascarello

+0

它是異步的。 –

回答

-1

這可能是緩存問題。我建議你通過每次提交更改網址來僞造。所以,你的代碼可能看起來像這樣

var d = new Date(); 
    t.open("POST", url+d.valueOf(), this.async); 

因此,你的網址將永遠不會被複制。這有助於防止緩存問題。

+0

URL正在更改每個請求。異步是真的 –

+0

POST不會緩存。 – epascarello

+0

確實如此,但使用微軟的產品IE,每一個問題都是可能的,不是嗎? :) –

相關問題