Android webview - XMLHttpRequest不能加载Origin <Access-Control-A
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
错误。当网站(在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
相关文章:
- 如何解决Access Control Allow Origin错误
- 由于响应中不存在“Access Control Allow Origin”标头,跨域请求停止工作
- XMLHttpRequest : 不被 access-control-allow-origin 所允许
- 可以在Access Control Allow Origin中指定端口
- Access Control Allow Origin阻止我访问google api,尽管使用了dataType:
- JSONP跨原点错误'不存在Access Control Allow Origin标头'
- 角度:原点http://localhost在Access Control Allow Origin标头中找不到
- Angular$resource调用不被Access Control Allow使用Safari接受,而被Chrome接
- Instagram API access_token request and Access-Control-Allow-
- 方法不允许 — 从 Angularjs 中的请求标头中删除 Access-Control-Request-Method
- Yahoo - OAuth2 - SocialAPI:在初始响应中不返回“Access-Control-Allow-Or
- 在 Safari 上使用通用分析的 Access-Control-Allow-Origin 不允许
- Windows上的CouchDB说请求的资源上不存在“Access-Control-Allow-Origin”标头
- XMLHttpRequest 无法加载 http No Access-Control-Allow-Origin head
- Emberjs/Chrome/FFox:预检中的数字 Access-Control-Request-Headers
- Simple XMLHttpRequest 失败,Access-Control-Allow-Origin 标头为 nul
- Flickr API OAuth Access Token request and Access-Control-All
- jquery.ajax Access-Control-Allow-Origin
- Chrome Origin 空值是 Access-Control-Allow-Origin 所允许的
- Angular JS$http Access-Control-Allow-Origin中的Credentials和通配符