[英]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.