每次路线更改时都请求网站图标

Posted

技术标签:

【中文标题】每次路线更改时都请求网站图标【英文标题】:Favicon requested on every route change 【发布时间】:2016-05-26 09:01:47 【问题描述】:

我认为路由更改会触发对网站图标的请求很奇怪。

这是故意的还是这里发生了什么?

【问题讨论】:

这正是我面临的问题。你找到解决办法了吗? 我也有同样的问题!!有什么解决办法吗?? 我也在经历这个 【参考方案1】:

尝试从您的服务器提供favicon.ico 或为此添加路由。我在使用 express catch-all app.get('*') 方法时遇到了这样的错误,该方法将所有请求重定向到 index.html(即使对于 favicon)

【讨论】:

【参考方案2】:

我遇到了同样的问题,我相信问题是从 Chrome 49.0.2623.87 开始的。我希望它会在即将到来的更新中得到修复。目前,我正在使用下面的脚本,可以找到here。

var favIcon = "favicon.ico";
var docHead = document.getElementsByTagName('head')[0];       
var newLink = document.createElement('link');
newLink.rel = 'shortcut icon';
newLink.href = 'data:image/png;base64,'+favIcon;
docHead.appendChild(newLink);

它不会停止 favicon 请求,因此在短时间内您仍会看到来自 chrome 的默认 favicon,但我相信对此没有什么可做的。

【讨论】:

【参考方案3】:

我找到了解决方案on Github。引用@Doeke:

尝试重新排序网站图标链接标签。对我来说,将 16x16 链接放在 32x32 之前可以解决此问题。至于为什么会这样……我不知道。

对我来说,这意味着将我页面上唯一的图标<link> 放在<head> 的顶部,在<meta charset> 之后。

【讨论】:

这成功了!文档中似乎没有任何网站图标才是真正的问题。【参考方案4】:

通过 index.html 页面中的以下代码行更改网站图标请求

<link rel="icon" href="data:image/vnd.microsoft.icon;base64,<data>">

这里,&lt;data&gt; 是您的网站图标的 base64 数据。

参考https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/Data_URIs

这个技巧会阻止用户的浏览器发送一个自动的 HTTP 请求来获取 favicon。

【讨论】:

以上是关于每次路线更改时都请求网站图标的主要内容,如果未能解决你的问题,请参考以下文章

如何更改网站的 ico图标

为啥 Chrome 会同时请求 .svg 和 .ico 网站图标?

基于网站网址的自定义标签图标

从另一个线程更改按钮图标/切换按钮

您如何更改 Swagger 图标?

Web网站主如何更改网页标签的图标(favicon.ico)