簡體   English   中英

Web 視圖不加載 Web 圖像

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM