节点简单的http应用程序响应2次

时间:2017-08-25 20:24:51

标签: node.js

我试图找到我的方式进入node.js转移用c#编写的本地体育统计应用程序。

编写http服务器,我观察到每次刷新(第一次)服务器发出新请求后,我都有2个响应。

我剥离代码以消除所有其他可能的原因和问题"仍然存在。

代码

var http = require("http");
var counter = 0;
var port = process.env.PORT || 3000;
var requestListener = function (req, res) {
    counter += 1;
    res.end("Hits: "+ counter);
};

var server = http.createServer(requestListener);

server.listen(port, function (err) {
    console.log("server listen on port " + port);
});

这是正常行为还是我错过了什么?

1 个答案:

答案 0 :(得分:3)

在浏览器页面中,这通常是由浏览器请求您的页面然后从同一主机请求其他资源(例如页面的favicon)引起的。您可以通过记录req.url来确切了解所请求的内容,以便了解正在发生的事情:

var http = require("http");
var counter = 0;
var port = process.env.PORT || 3000;
var requestListener = function (req, res) {

    // add logging for what url is being requested
    console.log(req.url);

    counter += 1;
    res.end("Hits: "+ counter);
};

var server = http.createServer(requestListener);

server.listen(port, function (err) {
    console.log("server listen on port " + port);
});
  

这是正常行为还是我错过了什么?

这是正常的和预期的。如果额外请求原来是一个favicon请求,那么您可以按照此处的说明禁用它:How to prevent favicon.ico requests?

注意:如果Web服务器甚至没有查看请求的URL,并且无论发送到它的路径请求是什么,都会做同样的事情。如果您正在查看URL并根据URL分支代码,则可能会避免您不期望的请求。