[英]Web view don't load web image
我已经将一个网页加载到了一个 android webview,它通过 javascript 从它的 url 加载了一个图像到一个网页,它给出了一个错误,页面没有加载任何人都可以帮忙吗?
[INFO:CONSOLE(0)] "Image from origin 'https://s-media-cache-ak0.pinimg.com' has been blocked from loading by Cross-Origin Resource Sharing policy: No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'null' is therefore not allowed access.", source: file:///android_asset/demo3.html (0)
我的Java代码是:
WebView wv = (WebView) vw.findViewById(R.id.help_webview);
WebSettings webSettings = wv.getSettings();
webSettings.setJavaScriptEnabled(true);webSettings.setLayoutAlgorithm(WebSettings.LayoutAlgorithm.SINGLE_COLUMN);
wv.setScrollBarStyle(WebView.SCROLLBARS_OUTSIDE_OVERLAY);
wv.loadUrl("file:///android_asset/demo3.html");
而 XML 只是简单的 Web 视图
<WebView
android:id="@+id/help_webview"
android:layout_width="fill_parent"
android:layout_height="fill_parent" >
</WebView>
我遇到了同样的错误。 Javascript将尝试加载图像,我会得到上面的错误。 将设置Webview设置的方法更改为下面的代码后,它开始起作用:
private void setupSettings() {
WebSettings settings = memoryGameView.getSettings(); // memoryGameView is an instance of android.webkit.WebView
settings.setLoadWithOverviewMode(true);
settings.setUseWideViewPort(true);
settings.setJavaScriptEnabled(true);
settings.setAllowFileAccess(true);
settings.setAllowContentAccess(true);
settings.setAllowFileAccessFromFileURLs(true);
settings.setAllowUniversalAccessFromFileURLs(true);
}
通常,在网站中运行的javascript代码无法访问其他网站的资源。 但是,来自网站的javascript应该能够访问来自同一网站的资源。 这称为同源策略 ,并且由所有主要浏览器实施。
同样的事情也适用于android native webview same-origin-policy-and-android-webview
如果文件位于本地,则可以尝试以下方法
WebView wv = (WebView) vw.findViewById(R.id.help_webview);
WebSettings webSettings = wv.getSettings();
webSettings.setAllowFileAccess(true).
webSettings.setAllowFileAccessFromFileURLs(true)
webSettings.setAllowUniversalAccessFromFileURLs(true).
这些方法存在于API 16及更高版本中,默认情况下为false,但是最好确保使用默认值。
请检查一下
wv.setWebViewClient(new WebViewClient());
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.