当前位置: 动力学知识库 > 问答 > 编程问答 >

javascript - Nodejs web server calling requestListener twice when page is loaded

问题描述:

The following is the example web server from the documentation, with an added counter. It prints the counter to the console whenever a client/browser requests the page.

However, it's being called twice when requested by the browser. Why?

This is what I would expect would happen:

browser : Hello World 1

console : Counter 1

[reload page]

browser : Hello World 2

console : Counter 2

but this happens:

browser : Hello World 1

console : Counter 1

Counter 2

[reload page]

browser : Hello World 3

console : Counter 3

Counter 4

I run the code using the command line

$ node example.js

Here is the code:

 var

http = require('http'),

counter = 0,

sys = require('util');

http.createServer(function (req, res) {

res.writeHead(200, {'Content-Type': 'text/plain'});

counter++;

res.end('Hello World ' + counter + '\n');

sys.puts('Counter ' + counter);

}).listen(8000, "");

网友答案:

In programming, when stuck, it's always handy to trace the code to better understand what's happening. The easiest way to do this is to put more debug/print statements in till you can see what's going on.

Change the sys.puts line to:

sys.puts('Counter ' + counter + " from " + req.url);

I think you'll find that the 2nd request is the browser requesting the favicon for the site.

网友答案:

We can ignore the page refresh count due to favicon with the following code snippet:

if (request.url === '/favicon.ico') {
   response.writeHead(200, {'Content-Type': 'image/x-icon'} );
   response.end();
   console.log('favicon requested');
   return;
}

Ref: https://gist.github.com/763822

分享给朋友:
您可能感兴趣的文章:
随机阅读: