gpt4 book ai didi

javascript - 使用 ReasonPhrase 处理 401

转载 作者:行者123 更新时间:2023-11-28 08:55:33 26 4
gpt4 key购买 nike

我有一个 AngularJS Web 应用程序,我在其中使用基本身份验证。这很有效,但是当用户输入错误的电子邮件或密码时,我想给他们一个好的错误消息。因此,我返回 401 并带有如下解释的原因短语:http://leastprivilege.com/2013/04/22/web-api-security-basic-authentication-with-thinktecture-identitymodel-authenticationhandler/

这工作正常,并且正确返回带有原因短语的 401。然而,使用 Angular 的 $http 会解释状态代码为 0 而不是 401 的响应,而且没有机会读取我想传递给用户的原因。例如。未知的电子邮件或错误的密码。

我已经在 Chrome 和 Firefox 中对此进行了测试,并且浏览了大量问题,但没有找到任何答案。我已经实现了这样的响应拦截器:

$httpProvider.responseInterceptors.push(function ($timeout, $q) {
return function (promise) {
return promise.then(function (successResponse) {
if (successResponse.config.method.toUpperCase() != 'GET')
showMessage('Success', 'successMessage', 5000);
return successResponse;

}, function (errorResponse) {
console.log("status: " + errorResponse.status, errorResponse.config);
switch (errorResponse.status) {
case 0:
case 401:
showMessage('Wrong email or password', 'errorMessage', 20000);
break;
case 403:
showMessage('You don\'t have the right to do this', 'errorMessage', 20000);
break;
case 500:
showMessage('Server internal error: ' + errorResponse.data, 'errorMessage', 20000);
break;
default:
showMessage('Error ' + errorResponse.status + ': ' + errorResponse.data, 'errorMessage', 20000);
}
return $q.reject(errorResponse);
});
};
});

调试时拦截器可以工作,但状态码从来不是 401,而是 0。在 Chrome 控制台中显示:

XMLHttpRequest cannot load http://localhost:64044/api/user/login/. Origin     
http://localhost:63546 is not allowed by Access-Control-Allow-Origin.

我有机会让它发挥作用吗?

最佳答案

这里的问题是您向托管 JavaScript 的服务器以外的服务器发出请求。您必须使用 jsonp 来解决此错误消息。

关于javascript - 使用 ReasonPhrase 处理 401,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18550195/

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