gpt4 book ai didi

javascript - 在 JavaScript 中捕获 Access-Control-Allow-Origin 错误

转载 作者:搜寻专家 更新时间:2023-11-01 05:03:44 24 4
gpt4 key购买 nike

我编写了一个不断返回 Access-Control-Allow-Origin 错误的函数。 这对我来说其实很好;我不想解决这个问题。我只是想捕捉它,这样我就可以在我的程序中阅读它的消息。

导致抛出错误的所有代码都在我的 try block 中,而我的 catch block 显示错误的字符串消息。但是,当我运行代码时,没有发现任何错误,并且错误在控制台中显示为红色。我如何捕获此错误并存储其消息?

        try {
var xhr = new XMLHttpRequest();
xhr.onload = function() {
if (this.status < 400 && this.status >= 300) {
console.log('this redirects to ' + this.getResponseHeader("Location"));
} else {
console.log('doesn\'t redirect');
}
}

xhr.open('HEAD', $scope.suggLink, true);
xhr.send();
} catch(e) {
console.log('Caught it!');
console.log(e.message);
}

最佳答案

虽然浏览器会将更详细的错误消息记录到控制台,但您无法从代码中访问它。参见 https://bugs.chromium.org/p/chromium/issues/detail?id=118096#c5 :

The details of errors of XHRs and Fetch API are not exposed to JavaScript for security reasons.

就此处实际要求的规范而言,Fetch 规范定义了在出现错误时提供的“状态消息”的详细信息——即使使用 XHR 而不是 Fetch API(XHR 规范引用获取规范)。对于浏览器阻止的任何网络错误或响应,Fetch 规范要求状态消息是“空字节序列”:

A network error is a response whose status is always 0, status message is always the empty byte sequence, header list is always empty, body is always null, and trailer is always empty.

因此,您可以从任何可以捕捉到的错误中返回的是“TypeError: Failed to fetch” 之类的。

如果您使用的是 XHR,则处理错误所需要做的就是 onerror 事件处理程序:

xhr.onerror = function() { console.log("Error occurred but I dunno what exactly.")}

关于javascript - 在 JavaScript 中捕获 Access-Control-Allow-Origin 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42721584/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com