为什么服务器没有从 Internet Explorer 8 获取 XMLHttpRequest?

问题描述 投票:0回答:1

我有一个简单的 Python 服务器,它对每个请求响应“ALIVE”,并用

flask-cors
封装在 CORS 中。

当从任何其他浏览器(Linux 上的 Chromium 127 和 Firefox 129,Windows 7 上的 Palemoon 33.2.1)发送 XMLHttpRequest 时,服务器会获取它,并打印它已获取它(

127.0.0.1 - - [date] "GET / HTTP/1.1" 200 -
),并且浏览器会收到响应。

当从IE8发送XMLHttpRequest时,浏览器中的日志显示请求已发送,但服务器没有收到。

我尝试用服务器替换http://google.com/http://example.com/,IE8仍然没有得到响应,而其他浏览器工作正常。

我还尝试删除 CORS,但这对其他所有浏览器都造成了破坏,并且没有针对 IE8 修复它。

最小可重现示例:

页码:

<!doctype html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Broken Ajax MRE</title>
  </head>
  <body>
    <script type="text/javascript">
      var xhr = new XMLHttpRequest();
      xhr.open("GET", "http://localhost:8080", true);

      xhr.onload = function () {
        console.log("Responded: " + xhr.status + " " + xhr.response);
      };

      xhr.onerror = function () {
        console.log("Network Error!");
      };

      xhr.send();
      console.log("Sent");
    </script>
  </body>
</html>

服务器:

from flask import Flask
from flask_cors import CORS, cross_origin

app = Flask(__name__)
CORS(app)

@app.route("/")
def is_alive():
    return "ALIVE"

app.run(host="127.0.0.1", port=8080)

我做错了什么?

html ajax xmlhttprequest internet-explorer-8 dhtml
1个回答
0
投票

对于任何寻找答案的人:

使用

xhr.onreadystatechange
xhr.onload
IE8 不支持。

var request = new XMLHttpRequest();
request.open('GET', '/my/url', true);

request.onreadystatechange = function () {
  if (this.readyState === 4) {
    if (this.status >= 200 && this.status < 400) {
      // Success! If you expect this to be JSON, use JSON.parse!
      success(this.responseText, this.status);
    } else {
      error();
    }
  }
};

request.send();
© www.soinside.com 2019 - 2024. All rights reserved.