我有一个用 Phonegap/Cordova 2.7.4 包装的 Sencha Touch 2.2.0 应用程序。它对使用 HTTP 基本身份验证的 REST API 进行简单的 ajax 调用。
Ext.Ajax.request({
url: 'http://localhost:3000/test',
method: 'GET',
// timeout occurs on invalid credentials?
timeout: 2000,
//enable basic authentication
withCredentials: true,
// need useDefaultXhrHeader: false and disableCaching: true to get cookies to work.
useDefaultXhrHeader: false,
disableCaching: true,
username: 'username',
password: 'password',
success: function(response) {
// process JSON data...
},
failure: function(response) {
console.log('Login failed. response.status:' + response.status +
', response.statusText:' + response.statusText +
', response.responseText:' + response.responseText);
// invalid credentials appears to timeout...
// response.status:0, response.statusText:communications failure, response.responseText: undefined
}
});
此代码在 iOS 设备上运行良好,但在 Android 上不行?
... D/CordovaLog(1967):登录失败。response.status:401,response.statusText:未授权,response.responseText:未授权
如果我在默认的 android 浏览器(托管在本地 apache 开发 Web 服务器上)中运行此应用程序,则浏览器会提示我输入凭据。我怀疑 ajax 请求超时等待凭据。无论凭据是否正确,它再次适用于 iOS?
有什么想法吗?