我没有favicon.ico,但我的浏览器总是发出请求。
是否有可能阻止浏览器从我的网站制作favicon的请求?也许是HTML头中的META-TAG ?
我没有favicon.ico,但我的浏览器总是发出请求。
是否有可能阻止浏览器从我的网站制作favicon的请求?也许是HTML头中的META-TAG ?
当前回答
如果你不使用HTML,它是由Flask或一些框架自动生成的,你可以在应用程序中添加一个虚拟路由,只返回虚拟文本来修复这个问题。
或 . . . 你可以添加图标:)
Eg for Python Flask Application。
@app.route('/favicon.ico')
def favicon():
return 'dummy', 200
其他回答
我首先要说的是,在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=">
你可以用
<link rel="shortcut icon" href="http://localhost/" />
这样就不会实际从服务器请求它。
我需要防止请求和有图标显示,即在Chrome。
快速代码尝试<head>:
<link rel="icon" type="image/png" sizes="16x16" href="data:image/png;base64,
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQBAMAAADt3eJSAAAAMFBMVEU0OkArMjhobHEoPUPFEBIu
O0L+AAC2FBZ2JyuNICOfGx7xAwTjCAlCNTvVDA1aLzQ3COjMAAAAVUlEQVQI12NgwAaCDSA0888G
CItjn0szWGBJTVoGSCjWs8TleQCQYV95evdxkFT8Kpe0PLDi5WfKd4LUsN5zS1sKFolt8bwAZrCa
GqNYJAgFDEpQAAAzmxafI4vZWwAAAABJRU5ErkJggg==" />
详细说明前面的答案,这可能是HTML文件本身的最短解决方案: <link rel="快捷图标" href="data:" /> .
测试工作,没有错误消息或失败的请求在Chrome版本94.0.4606.81
我通过使用内容安全策略HTTP响应报头解决了这个问题。通过使用这个,可以阻止浏览器进一步的媒体查询,如图像(其他类型也可以)。我添加了以下头的响应:
内容安全策略:img-src 'none'
问题是它会阻塞所有的图像查询。如果您的HTML有任何图像,它们将不会被加载。在我的情况下,这很可能是Firefox中的一个错误,因为浏览器正在请求favicon.ico的响应,其Content-type是text/xml!
它还取决于在客户端强制执行的实现此特性的浏览器。
访问https://content-security-policy.com获取CSP的完整指南。
干杯!