将android从2.3.3升级到4.0.3后,phonegap应用程序ajax调用失败

时间:2012-12-02 19:37:52

标签: android ajax cordova jquery-mobile android-4.0-ice-cream-sandwich

我使用以下方法开发了移动应用程序:

  • jquery mobile 1.1
  • jquery 1.7.2
  • cordova / phonegap 2.0.0

此应用程序向远程服务器发出AJAX后调用,如:

$.ajax(
type: "post",
cache: false,
timeout: 30000,
url: "http://"+ username+":"+password +"@mycompany.com/mysite/and/so/on.asmx",
contentType: "text/xml",
// other params...

该应用程序在Android 2.2和2.3.3中运行良好。到目前为止一切都很好。

用户已升级到Android 4.0.3,主页面加载正常,但ajax调用不再起作用。 同样在android 4.1的模拟器中也是如此。

考虑到除了平台之外什么都没有改变,Webkit层中可能发生什么变化导致问题? 是否有已知的迁移规则?

谢谢

2 个答案:

答案 0 :(得分:2)

很多东西在更新版本的android中被锁定以提高安全性。网址中包含的密码不安全,特别是如果您不使用https,则某些浏览器不再支持它们。

我还没有看到任何针对Android webview的内容,但谷歌的其他浏览器肯定已经弃用了它。

http://code.google.com/p/chromium/issues/detail?id=123150

尝试在标题中设置凭据:

$.ajax({
        type: "GET",
        url: url,
        dataType: 'json',
        async: true,
        data: {},
        beforeSend: function(xhr) {
            xhr.setRequestHeader('Authorization', "Basic " + btoa(user + ':' + pass));
        },
        success: onSuccess,
        error: onError
    });

答案 1 :(得分:0)

只需将<access origin="your server" subdomains="true" />放到config.xml即可。无需重写所有ajax调用;-)只需使用我的应用程序,并在所有Android版本上正常工作。