gpt4 book ai didi

rest - Angular 2 REST 请求 HTTP 状态代码 401 更改为 0

转载 作者:太空狗 更新时间:2023-10-29 16:51:49 26 4
gpt4 key购买 nike

我正在开发 Angular2 应用程序。似乎当我的访问 token 过期时,401 HTTP 状态代码在 Response 对象中更改为值 0。我收到 401 Unauthorized 但 ERROR Response 对象的状态为 0。这阻止我捕获 401 错误并尝试刷新 token 。是什么导致 401 HTTP 状态码变为 0 的 HTTP 状态码?

这是 Firefox 控制台的屏幕截图:

enter image description here

这是我的代码:

get(url: string, options?: RequestOptionsArgs): Observable<any> 
{
//console.log('GET REQUEST...', url);

return super.get(url, options)
.catch((err: Response): any =>
{
console.log('************* ERROR Response', err);

if (err.status === 400 || err.status === 422)
{
return Observable.throw(err);
}
//NOT AUTHENTICATED
else if (err.status === 401)
{
this.authConfig.DeleteToken();
return Observable.throw(err);
}
else
{
// this.errorService.notifyError(err);
// return Observable.empty();
return Observable.throw(err);
}
})
// .retryWhen(error => error.delay(500))
// .timeout(2000, new Error('delay exceeded'))
.finally(() =>
{
//console.log('After the request...');
});
}

此代码驻留在扩展 Angular2 的 HTTP 的自定义 http 服务中,因此我可以在单个位置拦截错误。

在 Google Chrome 中,我收到此错误消息:

XMLHttpRequest 无法加载 https://api.cloudcms.com/repositories/XXXXXXXXXXXXXXXX/branches/XXXXXXXXXXXXXXXX/nodesXXXXXXXXXXXXXXXX .请求的资源上不存在“Access-Control-Allow-Origin” header 。产地' http://screwtopmedia.local.solutiaconsulting.com ' 因此不允许访问。响应具有 HTTP 状态代码 401。

这很令人困惑,因为我在请求中包含了“Access-Control-Allow-Origin” header 。

这是 Google Chrome 中收到的结果图片:

enter image description here

我已尝试访问“WWW-Authenticate”响应 header 作为捕获 401 的方法。但是,以下代码返回 NULL:

err.headers.get("WWW-Authenticate")

令人费解的是我遇到了 CORS 问题,因为在提供有效访问 token 时我没有收到任何 CORS 错误。

如何捕获 401 HTTP 状态代码?为什么 401 HTTP 状态代码被更改为 0?

感谢您的帮助。

最佳答案

该问题与CORS 请求有关,请参阅this github issue

No 'Access-Control-Allow-Origin' header is present on the requested resource

表示响应 header 中需要'Access-Control-Allow-Origin'

Angular 没有得到任何状态代码,这就是为什么它给你一个 0 的原因,这是由于浏览器不允许 xml 解析器 解析 response 由于无效的 headers

您需要将正确的 CORS header 附加到您的错误响应 以及成功

关于rest - Angular 2 REST 请求 HTTP 状态代码 401 更改为 0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38999235/

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