这是一个基本的 jQuery $ajax 函数,我特意在其中调用了一个假端点;
const URL_RESTEndpoint = "http://localhost/api/MyEndpointIntentionalNotExist"
$.ajax(
{
url: URL_RESTEndpoint,
method: "PATCH",
//etc...
})
.done( (data, textStatus, jqXHR) => {
//do stuff with data...
})
.fail( (jqXHR, textStatus, errorThrown) => {
//do stuff with error params...
})
.always ( function (data_xhr, textStatus) {
console.log(textStatus);
}
当上面的代码运行时,在(Chrome 的)浏览器控制台上它会打印出一个很长的错误字符串:
"Access to XMLHttpRequest at 'http://localhost/api/MyEndpointIntentionalNotExist'
from origin 'http://localhost:3000' has been blocked by CORS policy:
Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin'
header is present on the requested resource."
好的。美好的。但我想以某种方式在我的 js 代码中捕获上述控制台错误字符串,这可能吗?
我检查了所有的 .$ajax 对象或参数;它可以做的最好的是将文字字符串“error”显示为错误。严重地 ?!
更新: 感谢评论员和链接,显然在 JS 中捕获 CORS 错误是一个安全漏洞。不需要答案,我投票结束了这个问题,但它可能会在未来帮助某人。