@fkonuma1208

Are you sure you want to delete the question?

If your question is resolved, you may close it.

Leaving a resolved question undeleted may help others!

We hope you find it useful!

WebViewでfavicon.icoロード時に404エラー

解決したいこと

Android StudioでWebViewを使用してurlをLoadするとfavicon.icoロード時に404エラーが発生しurlロードが完了しません。
解決方法を教えて下さい。

発生している問題・エラー

404エラー

404エラー

Loading

または、問題・エラーが起きている画像をここにドラッグアンドドロップ

該当するソースコード

        webView = (WebView)findViewById(R.id.webView1);
        webView.setWebViewClient(new MyWebViewClient2());
        WebSettings webSettings = webView.getSettings();
        webSettings.setJavaScriptEnabled(true);
        webView.loadUrl("https://www.shisetsu.city.yokohama.lg.jp/user/Home");

自分で試したこと

shouldInterceptRequestでfavicon.icoを無視するようにした。
WebResourceResponse("image/png", null, null);スクリーンショット 2023-12-30 151515.png

疑問

favicon.icoって何?

追記

load完了するurlもあります。

0 likes

3Answer

  • favicon.icoというのはブラウザタブの左端、タブブラウザでなければブラウザウィンドウの左上隅に表示される小さなアイコンのことです。Andoroid版Chromeだとタブ一覧(選択)画面でないと表示されないようですね。
  • ブラウザはwebサーバーからページ表示用のHTMLを受け取ると、HTML内のlink要素で明示的に指定されていなければ自動的にwebサーバールート直下のfavicon.icoを取得しようとします。(たとえばQiitaならhttps://qiita.com/favicon.icoとなりますが、実際には<link rel="shortcut icon" type="image/x-icon" href="https://cdn.qiita.com/assets/favicons/public/production-c620d3e403342b1022967ba5e3db1aaa.ico" />が指定されているのでこちらをロードします)
  • 何も指定などがなくてもブラウザ(この場合はWebView)が勝手に読もうとするので、faviconを用意していないサイト(割合としては少ないがありふれている)なら404エラーになることは避けられません。firefoxなどは設定で「faviconをロードしない」とすることもできるようです。

というわけで「サイト側の設定不足でなのでクライアント側で対処は困難。だから気にしない」ということになるでしょう。

余談ですが拡張子が.icoという見慣れないものなのは、この仕組みを最初に考案したのがMicrosoft(Internet Explorer)だったためです。

0Like

Your answer might help someone💌