如何防止favicon.ico请求?

我没有favicon.ico,但IE总是提出要求。

是否有可能阻止浏览器请求我的网站图标? 也许在HTML头部有一些META-TAG?

我首先会说在网页上有一个favicon是一件好事(通常)。

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

"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"> 

有关参考请参阅此处:

Chrome bug /行为可能会在即将到来的版本中修复。

这里是您提交投票的错误提交:

更新1:

从评论(jpic)看起来像Firefox> = 25不再喜欢上述语法。 我在Firefox 27上进行了testing,在Webkit / Chrome上仍然可以正常工作。

所以这里是新的应该涵盖所有最新的浏览器。 我testing了Safari,Chrome和Firefox:

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

我忽略了“rel”属性值中的“快捷方式”名称,因为这只适用于较老的IE,IE <8的版本也不喜欢dataURI。 未在IE8上testing。

更新2:

如果你需要你的文档来对HTML5进行validation,请使用下面的代码:

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

我相信我已经看到了这一点 (我没有testing过,或者个人使用)

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

任何人有类似的经验?

编辑:

我刚刚testing了上面的代码片断,并强制全面刷新,没有看到Fiddler的favicon请求。 我testing了IE8(Compat模式为IE7标准)和FF ​​3.6。

你不能。 你所能做的只是尽可能地减小图像,并在将来设置一些caching失效头( ExpiresCache-Control )。 这就是雅虎! 不得不说关于favicon.ico请求。

下面的解决scheme是非常短的,有效的HTML5,并不会从IE 8和以上的任何怪癖。

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

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

您可以使用.htaccess或服务器指令来拒绝对favicon.ico的访问,但服务器会向浏览器发送拒绝访问的回复,这仍然会降低页面访问速度。

当用户返回到您的站点时,您可以停止请求favicon.ico的浏览器,将其留在浏览器caching中。

首先,提供一个小favicon.ico图像,可以是空白的,但尽可能小。 我做了一个200字节的黑色和白色。 然后,使用.htaccess或服务器指令,在将来一两个月设置文件Expires头文件。 当同一用户返回到您的网站时,它将从浏览器caching中加载,并且没有请求会进入您的网站。 服务器中没有更多的404日志。

如果你可以控制一个完整的Apache服务器或者一个虚拟服务器,你可以这样做:

如果服务器的文档根目录是/ var / www / html那么把这个添加到/etc/httpd/conf/httpd.conf:

 Alias /favicon.ico "/var/www/html/favicon.ico" <Directory "/var/www/html"> <Files favicon.ico> ExpiresActive On ExpiresDefault "access plus 1 month" </Files> </Directory> 

然后,一个favicon.ico将适用于所有的虚拟托pipe网站,因为你是别名。 它将在用户访问后的一个月内从浏览器caching中提取。

对于.htaccess这是报道工作(不检查我): –

 AddType image/x-icon .ico ExpiresActive On ExpiresByType image/x-icon "access plus 1 month" 

下面的代码是一个非常简单的解决scheme.htaccess 。 我有同样的问题,它解决了我的问题。

 <IfModule mod_alias.c> RedirectMatch 403 favicon.ico </IfModule> 

参考: http : //perishablepress.com/block-favicon-url-404-requests/

根据我们的经验,Apache根据favicon.ico的要求宕掉了,我们在.htaccess文件中注释了额外的头文件。

例如,我们将Header设置为X-XSS-Protection“1; mode = block”

…但我们已经忘记预先sudo a2enmod标题。 注释掉额外的头文件解决了我们的favicon.ico问题。

我们还设置了多个虚拟主机进行开发,只有在使用http:// localhost和获取/favicon.ico时出现500内部服务器错误。 如果运行“curl -v http://localhost/favicon.ico ”,并获得关于主机名称不在parsing器caching中的警告,或者出现这种情况,可能会遇到问题。

它可能非常简单,因为没有获取(我们试过,并没有工作,因为我们的根本原因是不同的),或者在apache2.conf或.htaccess中查找可能导致奇怪的500内部服务器错误消息的指令。

我们发现它很快就失败了,Apache的错误日志没有任何用处,并且花了整整一个上午的时间来改变一些小东西,直到我们解决了当我们忘记加载mod_headers时设置额外头文件的问题!

我build议把网站放到一个.zip /压缩文件夹中。 这是一个示例网页在.zip /压缩文件夹中的样子: 网站在.ZIP /压缩文件夹

这是一个正常的文件夹中的样子: 正常文件夹中的网站

你可以使用

 <link rel="shortcut icon" href="http://localhost/" /> 

这样它不会实际上从服务器请求。