nodejs - http.createServer好像要调用两次

Wil*_*ill 67 node.js

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

  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);
Run Code Online (Sandbox Code Playgroud)

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

3on*_*3on 146

这是正常的 - 您的浏览器会拨打多个电话.

例如,大多数浏览器都会调用抓取/favicon.ico.

尝试记录网址:

console.log(req.url);
Run Code Online (Sandbox Code Playgroud)

你会看到被叫的东西.

  • 哇我觉得有点笨蛋......谢谢. (4认同)

Muk*_*ain 10

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

解决此问题的方法是检查请求URL是否正在提取favicon.ico.

http.createServer(function (req, res) {
    if (req.url != '/favicon.ico') {
        // do your stuffs
    }
}).listen(3500);
Run Code Online (Sandbox Code Playgroud)