【发布时间】:2015-02-16 01:34:36
【问题描述】:
使用以下代码执行(故意失败)跨域请求时:
var request = new XMLHttpRequest();
request.open("GET", 'http://code.jquery.com/jquery-2.1.1.min.js');
request.onerror = function(error) {
alert(error.target.status)
};
request.send()
我将在开发者控制台中收到以下预期错误消息:
XMLHttpRequest cannot load http://code.jquery.com/jquery-2.1.1.min.js No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://localhost' is therefore not allowed access.
但是这个错误消息是来自 XmlHttpRequest 还是来自浏览器?
我想从 XmlHttpRequest 中获取该错误消息,但我看不到在哪里。
使用上面的代码,我希望(如在https://stackoverflow.com/a/16931075/343475 中看到的)会在警告框中看到一条错误消息,但我得到的只是0。
【问题讨论】:
-
您正在尝试从与您的域不同的域加载页面,并且浏览器会告诉您,因为该域没有响应“Access-Control-Allow-Origin”标头不会执行 HTTP 请求。所以,是浏览器告诉你“不”。
-
@Pointy 你错过了问题的重点。 OP没有问错误是什么。 OP 正在询问它是从哪里生成的,以便他可以获得正确的错误消息。
-
刚刚看到这个:根据stackoverflow.com/a/5022962/343475的回答,是浏览器,javascript无法捕捉到错误。
-
@epascarello 不,我明白这一点,我想我已经回答了,因为我说消息来自浏览器。
-
XmlHttpRequest类是浏览器的一部分,因此区分它们没有意义。