0

我有一些软件在很多情况下都运行良好,但在 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>
4

0 回答 0