我试图找到进入 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);
});
这是正常行为还是我遗漏了什么?
最佳答案
在浏览器页面中,这通常是由于浏览器请求您的页面,然后从同一主机请求某些其他资源(例如页面的图标)而引起的。您可以通过记录 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);
});
Is this the normal behaviour or i missing something?
这是正常现象,也是意料之中的。如果额外的请求结果是一个网站图标请求,那么您可以禁用它,如下所述:How to prevent favicon.ico requests?
注意:Web 服务器甚至不查看请求的 URL,并且无论请求发送到哪个路径都执行相同的操作,这种情况有点不寻常。如果您查看 URL 并根据 URL 分支代码,您可能会避免意外的请求。
关于node.js - Node 简单http应用程序响应2次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45888916/