我已将我的项目从 Phonegap 1.4 升级到 Cordova 1.8.1。当我在 Phonegap 1.4 中传递无效的用户名/密码时,对 web 服务的 Ajax 调用与 401 Unauthorized 一起工作正常。
升级后它不起作用,我没有得到任何响应并且网络服务留在那里。
如果将代码更改为 Phonegap 1.4 ,它就会开始工作。
请帮忙
我已将我的项目从 Phonegap 1.4 升级到 Cordova 1.8.1。当我在 Phonegap 1.4 中传递无效的用户名/密码时,对 web 服务的 Ajax 调用与 401 Unauthorized 一起工作正常。
升级后它不起作用,我没有得到任何响应并且网络服务留在那里。
如果将代码更改为 Phonegap 1.4 ,它就会开始工作。
请帮忙
在过去的几个月里,我遇到了这个问题,终于解决了。
首先,我们使用的临时解决方法是对请求实施超时期限。这行得通,但响应始终是 404。我们不知道它是否真的未能通过身份验证,或者我们的服务是否已关闭。对于我们的系统来说,这不是可接受的解决方法。
最后,经过大量谷歌搜索,我发现了实际问题。
当返回 401(这是基本身份验证,身份验证失败)时,它会在响应中添加一个标头,称为“WWW-Authenticate”。这告诉浏览器提示用户尝试登录。iOS webview 不知道该怎么做,所以这就是应用程序挂起的原因。
从您的服务中,您需要做的就是删除 WWW-Authenticate 标头,您应该开始在错误函数中看到 401。
我只是有同样的问题。如果您传递不正确的凭据并使用
$.ajax({
...
timeout: 5000, // Some timeout value that makes sense
...
});
然后使用 调用错误回调{"readyState":0,"status":0,"statusText":"timeout"}
。在这种情况下,您将不得不猜测真正的错误是 HTTP 401。
或者,您可以使用
$.ajax({
...
async: false, // :-(
...
});
你的错误回调会得到类似的东西{"readyState":4,"responseText":"<html>...</html>","status":401,"statusText":"Unauthorized"}
。