我没有favicon.ico,但我的浏览器总是发出请求。

是否有可能阻止浏览器从我的网站制作favicon的请求?也许是HTML头中的META-TAG ?


当前回答

只需在HTML文件的<head>部分添加以下一行:

<link rel="icon" href="data:,">

解决方案特点:

100%有效的HTML5 很短的 不会引起ie8或更老版本的任何怪癖 不会使浏览器将当前HTML代码解释为favicon(这将是href="#"的情况)

其他回答

我首先要说的是,在Web页面中有favicon是一件好事(通常)。

然而,这并不总是理想的,有时开发人员需要一种方法来避免额外的负载。例如,IFRAME会请求一个图标而不显示它。 最糟糕的是,在Chrome和Android中,IFRAME将生成3个favicons请求:

"GET /favicon.ico HTTP/1.1" 404 183
"GET /apple-touch-icon-precomposed.png HTTP/1.1" 404 197
"GET /apple-touch-icon.png HTTP/1.1" 404 189

下面使用数据URI,可以用来避免虚假的favicon请求:

<link rel="shortcut icon" href="data:image/x-icon;," type="image/x-icon"> 

参考资料请参阅:

https://github.com/h5bp/html5-boilerplate/issues/1103 https://twitter.com/diegoperini/status/4882543836930048

更新1:

从评论(jpic)来看,Firefox >= 25不再喜欢上面的语法了。我在Firefox 27上进行了测试,它在Webkit/Chrome上仍然可以工作。

因此,这是一个新的浏览器,它应该涵盖所有最新的浏览器。我测试了Safari、Chrome和Firefox:

<link rel="icon" href="data:;base64,=">

我从“rel”属性值中省略了“快捷方式”名称,因为这只适用于较旧的IE,并且IE < 8的版本也不喜欢dataURIs。未在IE8上测试。

更新2:

如果你需要你的文档对HTML5进行验证,请使用以下方法:

<link rel="icon" href="data:;base64,iVBORw0KGgo=">

为了测试目的,暂时阻止这些最简单的方法是在chrome中打开检查页面,右键单击页面上的任何位置并单击检查,或者按Ctrl+Shift+j,然后转到网络选项卡,然后重新加载页面,这将发送您的页面应该发出的所有请求,包括恼人的favicon.ico。您现在可以简单地右键单击favicon.ico请求,然后单击“阻止请求URL”。

以上所有答案都适用于控制应用程序源代码的开发者。如果您是一名系统管理员,正在计算负载平衡器或代理配置,并对favicon.ico的恶作剧感到恼火,那么这个简单的技巧可以更好地发挥作用。这个答案是针对Chrome的,但我认为应该有一个类似的替代方案,你会发现Firefox/Opera/Tor/任何其他浏览器:)

就我个人而言,我在我的HTML头标签中使用了这个:

<link rel="shortcut icon" href="#" />

简单点说:

<link rel="shortcut icon" href="#" type="image/x-icon">

它没有显示任何内容!!!!

我通过使用内容安全策略HTTP响应报头解决了这个问题。通过使用这个,可以阻止浏览器进一步的媒体查询,如图像(其他类型也可以)。我添加了以下头的响应:

内容安全策略:img-src 'none'

问题是它会阻塞所有的图像查询。如果您的HTML有任何图像,它们将不会被加载。在我的情况下,这很可能是Firefox中的一个错误,因为浏览器正在请求favicon.ico的响应,其Content-type是text/xml!

它还取决于在客户端强制执行的实现此特性的浏览器。

访问https://content-security-policy.com获取CSP的完整指南。

干杯!