Ajax 为什么节点会听到两个请求?(法维康)

Ajax 为什么节点会听到两个请求?(法维康),ajax,node.js,google-chrome,favicon,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');

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

myIP:port/query
这应该会有一些结果然而,我注意到(至少)当通过浏览器(Chrome)进行查询时,服务器会收到两个请求。如果服务器只是按如下方式设置:

http.createServer(function (request,result) {
    console.log(request.url);
    handleRequest(request,result);
}).listen(3000, '0.0.0.0');
它打印两个请求URL:

  • /质疑
  • /favicon.ico
我想这意味着请求客户端会自动提取一个附加请求,希望加载favicon和实际页面。

  • 这个假设正确吗

  • 在提出请求以防止这种情况发生时,我能做些什么?它是由chrome驱动的,还是如果我使用ajax查询页面时也会发生这种情况

  • 在服务器端,用最少的服务器浪费精力过滤掉favicon请求的最佳实践是什么

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

  • 你。。。似乎已经知道为什么会有两个请求,显而易见的解决方案是要么忽略favicon请求及其引起的任何错误,要么让服务器响应它。这并没有解决我的问题。那么你的问题到底是什么?如果你在寻找“最佳实践”,那么你的网站家族就错了。