XMLHttpRequest因HTTPS / MSIE 10 / POST /大量请求而失败

时间:2013-09-16 21:40:48

标签: javascript ajax

我有一些软件在很多情况下运行良好,但在MSIE 10中失败了。我把它分解为最简单的测试用例,如下所示。 XMLHttpRequest有时会起作用,但更常见的是它会等待5到10秒(这些时间会不断变化),然后返回状态码为0。

只有HTTPS&的组合 MSIE 10&很多POST请求。改变其中任何一个都会使事情再次发挥作用。

  • 其他浏览器工作正常,包括MSIE 8.它不是服务器 问题。我可以同时运行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>

0 个答案:

没有答案