Why my node server processes the request twice?

前端 未结 2 861
遇见更好的自我
遇见更好的自我 2021-01-25 12:35

I have following simple node server.

const http = require(\'http\');

http.createServer(function(req, resp) {

    console.log(\"request arrived.\")
    resp.wri         


        
相关标签:
2条回答
  • 2021-01-25 13:00

    It is most likely that the browser is requesting for the favicon.ico file. You can confirm that by printing the URL, like this

    console.log("request arrived for URL", req.url);
    

    When I tried this on my machine, with Chrome browser, I got

    request arrived for URL /
    request arrived for URL /favicon.ico
    

    If you want to avoid that, then you need to handle the favicon request specially. Probably, you can do something like this, as shown here

    if (req.url === '/favicon.ico') {
        resp.writeHead(200, {'Content-Type': 'image/x-icon'} );
        resp.end();
        console.log('favicon requested');
        return;
    }
    
    console.log("request arrived.")
    resp.writeHead(200, { 'Content-Type': 'application/json' });
    resp.end("Hello world!!");
    
    0 讨论(0)
  • 2021-01-25 13:01

    In answer to the follow-up question "I have checked.But how we can avoid it?" answer is put the lines in previous answer just below the line that has http.createServer, so that you end up with something like following which contains 4 lines added to the original code in question:

    const http = require('http');
    
    http.createServer(function(req, resp) {
        if (req.url === '/favicon.ico') {
          res.end();
          return;
        }
    
        console.log("request arrived.")
        resp.writeHead(200, { 'Content-Type': 'application/json' });
        resp.end("Hello world!!");
    
    }).listen(3000);
    
    0 讨论(0)
提交回复
热议问题