node.js-nodejs-http.createServer似乎调用twi

如果我在节点中编写以下程序:

  http.createServer(function (req, res) {

    if( req.method == 'GET' ) {
      var body = ''; req.on('data', function(data) { body += data });
      req.on('end',  function() {
        console.log('request ended')
      });
    }

    res.writeHead(200, {'Content-Type': 'text/plain'});
    res.end('142\n');
  }).listen(3500);

然后用http://xxx.xx.xxx.xx:35010命中服务器,我在控制台上看到两次request ended -我不确定为什么单个HTTP请求导致两次执行。

Will asked 2019-10-06T09:17:26Z
2个解决方案
131 votes

这是正常现象-您的浏览器拨打了多个电话。

例如,大多数浏览器都会呼叫/favicon.ico

尝试记录网址:

console.log(req.url);

然后您会看到正在调用的内容。

3on answered 2019-10-06T09:17:58Z
6 votes

通常,浏览器会提取favicon.ico。 所以,两个电话。

解决此问题的方法可以是检查请求URL是否获取favicon.ico

http.createServer(function (req, res) {
    if (req.url != '/favicon.ico') {
        // do your stuffs
    }
}).listen(3500);
Mukesh Chapagain answered 2019-10-06T09:18:30Z
translate from https://stackoverflow.com:/questions/11961902/nodejs-http-createserver-seems-to-call-twice