2017-08-25 57 views
0

我试图找到我的方式进入node.js传递用c#编写的本地体育统计应用程序。节点简单的http应用程序响应2次

编写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); 
}); 

这是正常的行为,或者我失去了一些东西?

回答

3

在浏览器页面中,这通常是由浏览器请求您的页面,然后从同一主机(例如页面的图标)请求一些其他资源引起的。你可以清楚地看到正在请求的是通过登录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分支您的代码,您可能会避免您不期望的请求。