为什么每个请求都会调用两次回调函数?

时间:2017-10-02 20:44:53

标签: node.js

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

'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.I 对于单个8080呼叫,它打印出来:

Request number 0 received!
Request number 1 received!

我正在使用Visual Studio来运行这个节点js app。

1 个答案:

答案 0 :(得分:2)

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

console.log(request.url)

这可能会告诉你发生了什么。通常,您不希望拥有一个Web服务器,您从不查看所请求的资源。如果您将逻辑基于所请求的特定资源(例如/),那么您可以轻松地忽略其他类型的请求,例如favicon。