根据我在 IE9/IE8 中阅读的有关 CORS 支持的所有文档,似乎很清楚:
- 您无法在这些浏览器中使用
XMLHttpRequest
. 您必须使用 IE 的专有XDomainRequest
. XDomainRequest
不支持预检。我对这个限制的理解表明您只能发送 POST 或 GET CORS 请求,并且这些请求可能只包含简单的标头。此外,微软对 XDR 请求还有其他非常奇怪的限制,但这在这里并不完全重要。
所以,我所拥有的是一个页面http://192.168.1.1:8080
。使用XMLHttpRequest
时,我试图向 发送 DELETE 请求http://192.168.1.1.9000
。我完全预料到这会失败。在我重新考虑相关请求以确保它在我切换到使用 XDR 后适用于 CORS 请求之前,我只是在进行完整性检查。同样,我在这里使用 IE8。
var xhr = new XMLHttpRequest();
xhr.open("DELETE", "http://192.168.1.1:9000", true);
xhr.send();
奇怪的是,请求似乎成功了。DELETE 操作处理程序在服务器的 9000 端口被命中。我返回了响应,并且能够访问responseText
XHR 对象实例。
我无法想象为什么这实际上有效。似乎不应该有,除非我在这里遗漏了一些东西。有没有人有任何想法?