我使用以下方法开发了移动应用程序:
此应用程序向远程服务器发出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层中可能发生什么变化导致问题? 是否有已知的迁移规则?
谢谢
答案 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版本上正常工作。