2011-11-29 297 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,每一个问题都是可能的,不是吗? :) –

相关问题