gpt4 book ai didi

android - 为什么当我设置错误的凭据时,我对 http basic auth 的请求得到状态 0? Phonegap 安卓

转载 作者:行者123 更新时间:2023-11-29 15:23:34 24 4
gpt4 key购买 nike

在我用 phonegap 制作的 android 应用程序中,用户可以登录。当他们登录时,JQuery 获取他们的登录名和密码,并按照 HTTP Basic Auth 规范使用他们的凭据进行 ajax 调用。一切正常。
但是,当用户设置错误的凭据时,我遇到了处理这种情况的问题。在 .error() 回调中,我想显示状态 401 的特定消息(如“身份验证失败”)和其他状态的另一条消息(“技术问题”)。我的代码:

$.ajax({
url: "http://exemple.com",
type: "GET",
dataType: "text",
contentType: "application/x-www-form-urlencoded; charset=UTF-8",
beforeSend: function (xhr)
{
xhr.setRequestHeader("Authorization", "Basic "+$.base64.encode(email+":"+password));
},
success: function() {
//my success callback
},
error: function(xhr) {
if(xhr.status===401) {
//"authentication failed"
}
else {
//"technical problem"
}
}
});

此代码在浏览器中运行良好。状态 401 已发送。但是当我在我的 phonegap android 应用程序中测试时,状态发送为 0。当我的凭据良好时,状态发送为 200,并且我的应用程序的其他请求运行良好,所以我不认为这是一个 cors 问题。

有什么想法吗?感谢您的帮助

最佳答案

经过更多研究,我了解到问题出在 phonegap。服务器以状态 401 和 header 中的 WWW-Authenticate : Basic realm="Secured Area" 响应 ajax 请求。 WebView 拦截响应,并且由于 header ,等待凭据。但是这种行为在手机上是不可见的,所以请求到达超时并触发 0 状态代码。
一个好的解决方案是将服务器的响应更改为不包含 WWW-Authenticate header 。我的解决方案可能不好但很快,就是将 0 状态视为 401 状态。

error: function(xhr) {
if(xhr.status===401 || xhr.status===0) {
//'authentication failed'
}
else {
//'technical error'
}
},

希望对大家有所帮助。

关于android - 为什么当我设置错误的凭据时,我对 http basic auth 的请求得到状态 0? Phonegap 安卓,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15656355/

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