Chrome 为什么节点会听到两个请求?(Favicon)

vojdkbi0  于 2023-11-14  发布在  Go
关注(0)|答案(1)|浏览(158)

我试着做了一个简单的API。如果有人/某事查询:

myIP:port/query

字符串
它应该有一些结果。然而,我注意到(至少)当查询是由浏览器(Chrome)发出时,服务器会收到两个请求。如果服务器简单地设置如下:

http.createServer(function (request,result) {
    console.log(request.url);
    handleRequest(request,result);
}).listen(3000, '0.0.0.0');


它打印两个请求URL:

  • /query
  • /favicon.ico
    **我想这意味着请求客户端自动绘制一个额外的请求,希望加载favicon以及实际页面。
  • 这个假设是否正确?
  • 在发出请求时,我能做些什么来防止这种情况发生吗?它是由Chrome驱动的,还是如果我使用Apache查询页面,也会发生这种情况?
  • 在服务器端过滤掉favicon请求的最佳实践是什么?
i7uq4tfw

i7uq4tfw1#

1.你的假设是正确的。大多数浏览器,在第一次访问一个网站时,如果在HTML主体的头部没有指定为<link rel="icon" ... />的favicon,则会发出GET /favicon.ico
1.不,这是客户端(浏览器)实现的功能。您无法在服务器端阻止此行为。如果通过AJAX发出请求,浏览器将不会向/favicon.ico发出额外的请求,但此时浏览器可能已经发出了该请求(您必须加载页面才能执行AJAX请求)。
1.据我所知,没有服务器端的“最佳实践”来减少这些请求的数量。但是,你可以修改你提供给客户端的模板(或HTML文件),在文档的头部显式地包含一个<link ref="icon" ... />语句。

相关问题