javascript - IE11 XMLRequest 访问被拒绝

标签 javascript exception xmlhttprequest cors internet-explorer-11

我尝试在 http://localhost:8080/ 上执行一个简单的 AJAX 请求,但在使用 IE 11 时我立即收到错误消息。我认为 IE 甚至没有尝试发送任何东西。

有人遇到过这个问题吗?

这是一个fiddle表现出这种行为,

html:

<button id='btn1'>launch</button>

加载时:

var xhr,btn=document.getElementById('btn1');
btn.onclick=onButton;

var onReadyState=function(){
  console.log('ready state:'+_xhr.readyState);
  if(xhr.readyState===4){
    console.log('status:'+_xhr.status);
  }
}

function onButton(){
  xhr=new window.XMLHttpRequest();
  xhr.onreadystatechange=onReadyState;
  xhr.open('POST','http://localhost:8080/ScanAPI/v1/client');
  xhr.send();
}

您需要启动 IE F12 开发人员工具,然后再尝试,您会看到 IE 捕获异常。

如有任何帮助,我们将不胜感激。

谢谢!

最佳答案

它不起作用,因为您正在引用一个名为 _xhr 的对象,该对象不存在于 onReadyState 函数的范围内。

你应该使用 this 来代替:

var onReadyState = function() {
    if (this.readyState === 4) {
        console.log('status :' + this.status);
    }
};

那是因为 XMLHttpRequest 对象会用它自己的上下文回调 onReadyState,可以通过函数中的 this 访问它。

另请注意,onReadyState 函数在其定义的末尾缺少一个分号,第一眼没注意到。

编辑:我还注意到 IE10(和 IE11)确实解释了 some HTTP response code as network errors (例如使用 401 响应代码),如果是您的情况,那么 IE 无法检索您的资源是有道理的。

我 fork 了你的 fiddle 和 wrote a simple page这适用于 IE11。

关于javascript - IE11 XMLRequest 访问被拒绝,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23771002/

相关文章:

java - 从 SOAPException 抛出超时异常

python - 在 python 方法中处理异常的正确方法是什么?

.net - 重试临时异常 .Net

php - 使用 XmlHttpRequest 传递请求值

javascript - 如何在 Internet Explorer 中创建跨域 XMLHTTPRequests

javascript - 图表初始化后如何更改 highcharts 事件

javascript - 将字符串数组减少到最小的可正则表达式值

php - xmlhttprequest 在函数中不能正常工作

javascript - 页面加载后可以使用 javascript/Jquery 重写/修改 URL

javascript - 我可以依靠 `<tbody>` 标记的隐式创建吗?