我正在使用 jquerymobile 开发一个 javascript/HTML 应用程序,它向远程服务器发出 ajax 请求。该应用程序在 Chrome 上运行良好(仅在禁用网络安全的情况下启动 chrome),但是当我将其嵌入 Android 应用程序(一个简单的 webview)的 asset/ 目录中时,远程 ajax 调用失败。因此我猜测这可能是跨域问题。我知道phonegap 没有这个问题,但如果可能的话我不想使用phonegap。所以问题是:如何在 Android webview 应用程序中禁用跨域保护?
这是活动代码:
public class Moby extends Activity {
@SuppressLint("NewApi")
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_moby);
WebView mbrowser = (WebView) findViewById(R.id.webView1); //get the WebView from the layout XML
if (Build.VERSION.SDK_INT >= VERSION_CODES.JELLY_BEAN)
mbrowser.getSettings().setAllowUniversalAccessFromFileURLs(true);
//mbrowser.setWebChromeClient(new WebChromeClient());
mbrowser.setWebViewClient(new WebViewClient());
mbrowser.loadUrl("file:///android_asset/index.html"); //set the HTML
WebSettings settings = mbrowser.getSettings();
settings.setJavaScriptEnabled(true);
}
}
<uses-permission android:name="android.permission.INTERNET" />
我已经在我的 html 页面中设置了 jquerymobile 跨域参数:
<script src="script/jquery-1.8.2.js"></script>
<script>
$(document).bind("mobileinit", function(){
$.support.cors = true;
$.mobile.allowCrossDomainPages = true;
});
</script>
<script src="script/jquery.mobile-1.2.0.js"></script>
我没有足够的积分来发表评论,但是,请查看以下内容:
ajax 适用于某些 Android 设备,不适用于其他设备
具体来说,基于 Chrome 的 webView 需要满足以下条件:
webView.getSettings().setAllowUniversalAccessFromFileURLs(true);
编辑:抱歉,我刚刚看到你已经在这样做了——我对此进行了测试,它似乎已经解决了我的问题(通过 ajax 加载本地链接时出现 access-control-allow-origin 错误)。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)