为什么节点会听到两个请求? (网站图标)

时间:2017-01-16 22:49:31

标签: ajax node.js google-chrome favicon

我试图制作一个简单的API。如果有人/某事询问:

myIP:port/query

它应该起到一些作用。 但是,我注意到(至少)当浏览器(Chrome)进行查询时,服务器会收到两个请求。如果服务器只是设置如下:

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

它会打印两个请求网址:

  • /查询
  • /favicon.ico

我想这意味着请求客户端会自动绘制一个额外的请求,希望加载favicon和实际页面。

  • 这个假设是否正确?

  • 在提出阻止此操作的请求时,我能做些什么吗?它是由chrome驱动还是如果我使用ajax查询页面也会出现?

  • 服务器端过滤掉favicon请求的最佳做法是什么,服务器上的工作量最小?

1 个答案:

答案 0 :(得分:0)

  1. 你的假设是正确的。大多数浏览器在首次访问网站时,如果在HTML正文的头部没有指定为GET /favicon.ico的图标,则会发出<link rel="icon" ... />
  2. 不,这是客户端(浏览器)端实现的功能。您无法在服务器端执行任何操作以防止此行为。如果请求是通过AJAX进行的,浏览器将不会向/favicon.ico发出额外请求,但是此时浏览器可能已经提出了该请求(您必须加载页面才能执行AJAX请求) )。
  3. 据我所知,没有服务器端&#34;最佳做法&#34;减少这些请求的数量。但是,您可以通过在文档头部明确包含<link ref="icon" ... />语句来修改您为客户端提供的模板(或HTML文件)。