Node.js 为什么每个请求调用两次回调函数?

Node.js 为什么每个请求调用两次回调函数?,node.js,Node.js,伙计们,我是NodeJS的新手,这种行为对我来说很奇怪! 在下面的代码片段中 'use strict'; var http = require('http'); var numberOfRequests = 0; http.createServer(function (request, responce) { console.log('Request number ' + numberOfRequests + ' received!'); responce.writeHead(2

伙计们,我是NodeJS的新手,这种行为对我来说很奇怪! 在下面的代码片段中

'use strict';
var http = require('http');
var numberOfRequests = 0;
http.createServer(function (request, responce) {
    console.log('Request number ' + numberOfRequests + ' received!');
    responce.writeHead(200);
    responce.write("Here is responce to your request..");
    responce.end();
    numberOfRequests++;
}
).listen(8080);
console.log('listening ...');
每人

localhost:8080 
在Chrome上调用,应用程序在控制台上写入两次?e、 我 对于单个8080呼叫,它会打印出:

Request number 0 received!
Request number 1 received!

我正在使用Visual studio运行这个节点js应用程序。

通常,当您看到每个页面请求有两个请求时,一个是针对所需页面的请求,另一个是针对网站的favicon请求。这是大多数浏览器所做的,除非页面中有meta标记告诉浏览器不要请求favicon资源。如果在处理程序中执行此操作:

console.log(request.url)

这可能会告诉你发生了什么。一般来说,您不希望有一个web服务器,在那里您永远不会查看请求的资源。如果您的逻辑基于被请求的特定资源,例如
/
,那么您将很容易忽略其他类型的请求,例如favicon。

打开Chrome开发工具。它可能正在请求favicon@zero298你是对的。就是这样,但为什么?我只是发送一个简单的请求。我的请求中没有提到任何关于favicon.ico的内容!Chrome就是这么做的。如果您想更明确地控制请求,可以使用诸如curl或postman之类的工具。@zero298请求中是否有要打印的字段,以查看此特定请求是来自favicon还是其他什么?e、 g,类似request.string!检查,我想应该是
request.path