如何防止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">
有关参考请参阅此处:
- https://github.com/h5bp/html5-boilerplate/issues/1103
- https://twitter.com/diegoperini/status/4882543836930048
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失效头( Expires
, Cache-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 /压缩文件夹中的样子:
这是一个正常的文件夹中的样子:
你可以使用
<link rel="shortcut icon" href="http://localhost/" />
这样它不会实际上从服务器请求。