[英]XMLHttpRequest cannot load Origin is not allowed by Access-Control-Allow-Origin
[英]Android webview - XMLHttpRequest cannot load Origin <url> is not allowed by Access-Control-Allow-Origin
我有一个应用程序,它在android webview中加载一个完整的网站。 android项目中的本机代码使用Android Jockey Library与网页交互,反之亦然。
一切正常接受我遇到的XMLHttpRequest cannot load ... Origin <url> is not allowed by Access-Control-Allow-Origin
一个状态XMLHttpRequest cannot load ... Origin <url> is not allowed by Access-Control-Allow-Origin
错误XMLHttpRequest cannot load ... Origin <url> is not allowed by Access-Control-Allow-Origin
。 当网站(在webview中加载)对后端api进行ajax调用时会发生这种情况。
我的网站是在m.mywebsite.com
使一个AJAX调用api.mywebsite.com
-尤其是两个独立的子域,但这似乎在iOS上正常工作。
我正在Android v4.4.2上测试它。 通过编译再次目标sdk 15和19测试它,但没有区别。
我已将大部分设置应用到我的webview中,如下所示:
webView = (WebView) findViewById(R.id.webView);
webView.getSettings().setLoadWithOverviewMode(true);
webView.getSettings().setBuiltInZoomControls(false);
webView.getSettings().setJavaScriptEnabled(true);
webView.getSettings().setDatabaseEnabled(true);
webView.getSettings().setDomStorageEnabled(true);
webView.getSettings().setAllowContentAccess(true);
webView.getSettings().setAllowUniversalAccessFromFileURLs(true);
webView.getSettings().setAllowFileAccessFromFileURLs(true);
webView.getSettings().setAllowContentAccess(true);
webView.getSettings().setAppCacheEnabled(true);
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.KITKAT) {
webView.getSettings().setDatabasePath("/data/data/" + webView.getContext().getPackageName() + "/databases/");
}
webView.getSettings().setSupportZoom(false);
webView.setWebChromeClient(new WebChromeClient());
webView.setInitialScale(0);
以下是我的赛马整合:
if (Utils.isNetworkAvailable(this)) {
jockey = JockeyImpl.getDefault();
jockey.configure(webView);
webViewClient = new MyWebViewClient(this);
jockey.setWebViewClient(webViewClient);
setJockeyEvents();
webView.loadUrl(EnvironmentManager.getStartUpURL());
}
任何人面临类似问题或有解决方案?
谢谢!
嗨,我认为你需要为你的网页视图设置一个设置。 实际上这个问题来自于大于API级别16的设备。找到以下代码:
if (Build.VERSION.SDK_INT >= VERSION_CODES.JELLY_BEAN) {
webView.getSettings().setAllowUniversalAccessFromFileURLs(true);
}
希望它能为你效劳。
您可以通过从api.mywebsite.com
上的页面发送适当的Access-Control-Allow-Origin
标头来解决此问题,如下所示:
Access-Control-Allow-Origin: http://m.mywebsite.com
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.