有什么方法可以捕获Access-Control-Allow-Origin
发出请求时引起的错误?我正在使用 jQuery,并且设置的处理程序.ajaxError()
永远不会被调用,因为请求从来没有开始。
有什么解决方法吗?
有什么方法可以捕获Access-Control-Allow-Origin
发出请求时引起的错误?我正在使用 jQuery,并且设置的处理程序.ajaxError()
永远不会被调用,因为请求从来没有开始。
有什么解决方法吗?
对于 CORS 请求,应该触发 XmlHttpRequest 的 onError 处理程序。如果您有权访问原始 XmlHttpRequest 对象,请尝试设置一个事件处理程序,例如:
function createCORSRequest(method, url){
var xhr = new XMLHttpRequest();
if ("withCredentials" in xhr){
xhr.open(method, url, true);
} else if (typeof XDomainRequest != "undefined"){
xhr = new XDomainRequest();
xhr.open(method, url);
} else {
xhr = null;
}
return xhr;
}
var url = 'YOUR URL HERE';
var xhr = createCORSRequest('GET', url);
xhr.onerror = function() { alert('error'); };
xhr.onload = function() { alert('success'); };
xhr.send();
注意几点:
在 CORS 请求上,浏览器的 console.log 将显示一条错误消息。但是,您的 JavaScript 代码无法使用该错误消息(我认为这是出于安全原因,我之前曾问过这个问题:是否可以捕获 CORS 错误?)。
xhr.status 和 xhr.statusText 未在 onError 处理程序中设置,因此对于 CORS 请求失败的原因,您并没有任何有用的信息。你只知道它失败了。
可能会出现如下错误状态:
xhr.onerror = function(e) {
alert("Error Status: " + e.target.status);
};
来源:https ://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/Using_XMLHttpRequest
为onerror设置一个处理程序,您将能够捕获跨域异常。我不知道为什么会为异常而不是错误事件触发onerror事件,但我只是对其进行了测试并且它有效。
req = $.get('http://www.example.com');
req.onerror = function() { alert('An exception occurred.') };