每次路线更改时都请求网站图标
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>">
这里,<data>
是您的网站图标的 base64 数据。
参考https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/Data_URIs
这个技巧会阻止用户的浏览器发送一个自动的 HTTP 请求来获取 favicon。
【讨论】:
以上是关于每次路线更改时都请求网站图标的主要内容,如果未能解决你的问题,请参考以下文章