私は、多くの場合にうまく機能するソフトウェアをいくつか持っていますが、MSIE 10 ではうまく機能しません。以下に示すように、可能な限り単純なテスト ケースに分解しました。XMLHttpRequest が機能することもありますが、多くの場合、5 ~ 10 秒待機し (時間は常に変化します)、ステータス コード 0 を返します。
HTTPS & MSIE 10 & 多くの POST リクエストの組み合わせのみです。これらのいずれかを変更すると、再び機能するようになります。
- MSIE 8 を含む他のブラウザは正常に動作します。これはサーバーの問題ではありません。テスト プログラムの 10 個のコピーを chrome で一度に問題なく実行できます。
- HTTPSのみです。HTTP に切り替えると、すべて正常に動作します。(同じサーバーが両方のポートをリッスンし、同じソフトウェアを提供しています。) 私の一時的な回避策は、人々に HTTP アドレスを表示することですが、私はそれが好きではありません。
- これは POST リクエストでのみ発生します。POST の代わりに GET を実行するようにテスト プログラムを変更すると、すべて正常に動作します。残念ながら、それは実際のプログラムのオプションではありません。
- これは、多くの継続的なリクエストの後にのみ発生します。多くの場合、いくつかのリクエストでは問題なく、その後失敗し始めます。更新を押しても役に立ちません。私のスクリプトではなく、ブラウザに問題があるようです。
誰もそのような問題を見たことがありますか?それを修正する方法を知っていますか?
<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>