node.js - Node 简单http应用程序响应2次

标签 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);
});

这是正常行为还是我遗漏了什么?

最佳答案

在浏览器页面中,这通常是由于浏览器请求您的页面,然后从同一主机请求某些其他资源(例如页面的图标)而引起的。您可以通过记录 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/

相关文章:

node.js - 如何检查 IP 是否在给定的 IP 范围内?

javascript - 将 OCRed 非结构化文本转换为正确的文本

javascript - 查询为空 Node Js Sequelize

node.js - meteor 应用程序中 pdfmake 中的服务器端字体目录

node.js - NightmareJS 截图回调

node.js - 如何在KeystoneJS中上传S3文件

javascript - Node EventEmitter 未给出预期结果

node.js - 无法运行 nools

javascript - 如何手动创建 Git blob 对象,然后使用 node.js 读取内容,就像 ProGit 关于 Git 内部原理的章节中一样?

javascript - Sails.js w/Handlebars(SPA 风格)中 Ember.js 产量的等价物