最近遭遇したこのプロジェクトでは問題ではなく、どのように注意する前に、以前に書かれたデモを表示するには、いくつかの独自の照会、およびいくつかのもいくつかは、以前のプロジェクトを表示、その後、表示されません、古いプロジェクトが深く、なぜ、問題ありません表示。
まず、当然、それは百度で、引数を参照してください2種類があり、
まず、名前のfavicon.icoをICOプログラムは、静的、自動表示の下に置きます。
第二の実施形態では、その後、=偽をspring.mvc.favicon.enabled
HTMLファイルに次の行を追加します。
< リンクREL = "アイコン" 番目:HREF = "/ favicon.icoを" タイプ= "画像/ Xアイコン" > < リンクREL = "ブックマーク" 番目:HREF = "/ favicon.icoを" タイプ= "画像/ X -icon」>
あまりにも激しい彼らとマスターページへの参照が存在しない、テストは無効で、第二である、あなたがすることができますが、問題があります。長いfavicon.icoを命名ICOなどとしてIISを使用するときに覚えている、ルートディレクトリ内のページの参照のみを探求し続けるべきではない、この要求は、ブラウザへの取り組みで作られるべきであるように、することができます。
Baiduの+表示springbootのソースコード、WebMvcAutoConfiguration処理ファビコンを発見し、自動的に静的の下に表示されるのはなぜ上位にプログラムを理解しており、それは自動的にデフォルトのパス4の静的リソースと一致します
クラスパス:/ META-INF /リソース/ クラスパス: /リソース/ クラスパス: / 静的 / クラスパス: / 公共 /
プラス"/"ルート
locations.add(新ClassPathResource( "/" ));
だから、これらのディレクトリの本質に同じです
しかし、問題を解決していない、ソースコード、ない解決策を研究し続けています。
ルックバックと考えて、favicon.icoをのメカニズム、およびデフォルトのビューレンダリングすることによりICOレンダリングするとは思いませんでしたが、その後、問題は確かに、コードではなく、ブラウザの問題ではありません、だけでは、要求を開始したブラウザ、なぜブラウザは時々要求、時には最初のすべてのキャッシュを考える、しかし、それを要求しないキャッシュが通常要求しますが、キャッシュからのヒントは、ICOは常にそうあるべきと思ったが、ブラウザでも確認された場合でも、通常の非同期要求キャッシュを無効に。ファビコン再要求に情報を確認し、文を見て、グーグルはもはや要求があるだろうFirefoxが約2分を一度に要求されている間、あなたはリフレッシュ要求し、Ctrl + F5キーテストを強制的にキャッシュまたはCtrl + F5をクリアすることができ、そして確かにグーグル.icoファイル、404ビューイングパスは、http報告://localhost/favicon.ico、黄呉この瞬間、またはメカニズムの問題を、デフォルトのブラウザ要求のhttp://ドメイン+のfavicon.icoが、プロジェクトは、多くの場合、プロジェクトを伴っています名前、実際のパスはhttp:Googleのキャッシュ機構、要求1は、バックが要求されていないことを要求しませんでした、と自然に何があるでしょうから、//ドメイン+プロジェクト名+ favicon.icoを、間違ったパスではなく、自然な要求。
ソリューション:
これは戦略ブラウザの問題ですので、これは直接の解決策はありません、
方案一:不配项目名,http://域名(或者IP+端口)/favicon.ico能访问到图片,就没有问题
方案二:页面明确指定ico
<link rel="icon" th:href="/favicon.ico" type="image/x-icon"> <link rel="bookmark" th:href="/favicon.ico" type="image/x-icon">
但是这样比较费劲,所有页面都要加,折中方案就是用母版页,统一添加,已有项目的话改动也比较大,
折中方案二:通过拦截器,在页面渲染完成后追加一段js,
可以继承HandlerInterceptor接口,重写afterCompletion方法,添加以下代码通过js写入
String link = "<script>" + "var link = document.createElement('link');" + "link.type = 'image/x-icon';" + "link.rel = 'shortcut icon';" + "link.href = '/nascan/images/favicon.ico';" + "document.getElementsByTagName('head')[0].appendChild(link);" + "</script>"; response.getWriter().append(link);
注:有空继续研究,看有没有其他方法,看了一些网站,全都是通过link指定的,默认的方式确实问题多多,还是指名道姓的好。