0

我开发了一个移动应用程序,使用:

  • jQuery手机1.1
  • jQuery 1.7.2
  • 科尔多瓦/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 层中的哪些变化可能会导致问题?是否有已知的迁移规则要遵循?

谢谢你

4

2 回答 2

2

在较新版本的 android 中,为了提高安全性,很多东西都被锁定了。url 中包含的密码是不安全的,特别是如果您不使用 https,因此某些浏览器不再支持它们。

我没有看到任何特定于 android webview 的东西,但它在 google 的其他浏览器中肯定已被弃用。

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
    });
于 2012-12-03T00:23:30.457 回答
0

只需放入<access origin="your server" subdomains="true" />config.xml 即可。无需重写所有 ajax 调用 ;-) 刚刚用我的应用程序完成了它,它在所有 android 版本上都可以正常工作。

于 2013-09-20T08:41:56.913 回答