我有一些软件在很多情况下都运行良好,但在 MSIE 10 中表现不佳。我已将其分解为最简单的测试用例,如下所示。XMLHttpRequest 有时会起作用,但更多时候它会等待 5 到 10 秒(时间不断变化),然后返回状态码 0。
它只是 HTTPS 和 MSIE 10 以及大量 POST 请求的组合。更改其中任何一项都会导致事情再次起作用。
- 其他浏览器工作正常,包括 MSIE 8。这不是服务器问题。我可以在 chrome 上一次运行 10 个测试程序副本,没有任何问题。
- 它只是HTTPS。当我切换到 HTTP 时,一切正常。(同一台服务器监听两个端口,服务于相同的软件。)我的临时工作是向人们显示 HTTP 地址,但我不喜欢这样。
- 这只发生在 POST 请求中。当我将测试程序更改为 GET 而不是 POST 时,一切正常。不幸的是,这不是真正的程序的选择。
- 这只发生在大量连续请求之后。通常对于一些请求会很好,然后开始失败。点击刷新没有帮助。就像浏览器而不是我的脚本有问题一样。
有没有人见过这样的问题?你知道如何解决吗?
<HTML>
<HEAD>
<TITLE>test</TITLE>
<SCRIPT>
<!--
var count = 0;
function addLine(line)
{
var newDiv = document.createElement("div");
newDiv.innerText = line;
document.body.appendChild(newDiv);
}
function my_main()
{
addLine("script started");
scheduleRequest();
}
function scheduleRequest()
{
try
{
if (count < 50)
{
count++;
//setTimeout(sendRequest, 1);
sendRequest();
}
else
addLine("Done!");
} catch (err) {
addLine("Exception in scheduleRequest(): " + err.message);
}
}
function sendRequest()
{
try
{
var xmlhttp = new XMLHttpRequest();
xmlhttp.open("POST","t.php?nocache="+Math.random(),true);
xmlhttp.onreadystatechange=function()
{
if (xmlhttp.readyState == 4)
{
var success = (xmlhttp.responseText == "yes\n") && (xmlhttp.status == 200);
var status = "#" + count + ": ";
if (success)
status += "success.";
else
status += "FAIL. status=" + xmlhttp.status;
addLine(status);
scheduleRequest();
}
}
xmlhttp.send("sequence=5");
} catch (err) {
addLine("Exception in sendRequest(): " + err.message);
}
}
-->
</SCRIPT>
</HEAD>
<BODY ONLOAD="my_main()">
<div>Let's go!</div>
</BODY>
</HTML>