Skip to content

Instantly share code, notes, and snippets.

@kentbrew
Created January 3, 2011 19:32
Show Gist options
  • Save kentbrew/763822 to your computer and use it in GitHub Desktop.
Save kentbrew/763822 to your computer and use it in GitHub Desktop.
How to short-circuit those annoying favicon requests in node.js
// early experiments with node had mysterious double requests
// turned out these were for the stoopid favicon
// here's how to short-circuit those requests
// and stop seeing 404 errors in your client console
var http = require('http');
http.createServer(function (q, r) {
// control for favicon
if (q.url === '/favicon.ico') {
r.writeHead(200, {'Content-Type': 'image/x-icon'} );
r.end();
console.log('favicon requested');
return;
}
// not the favicon? say hai
console.log('hello');
r.writeHead(200, {'Content-Type': 'text/plain'} );
r.write('Hello, world!');
r.end();
}).listen(8000);
console.log('Server running at http://127.0.0.1:8000/');
@pavelnikolov
Copy link

If you are using express you can do it like this

app.use(express.favicon(__dirname + '/public/favicon.ico'));

@flpms
Copy link

flpms commented Jul 3, 2014

Great Solution without express! Thanks!

@radicalsauce
Copy link

Thank you! Exactly what I was looking for. πŸ‘

@SarasArya
Copy link

Thanks... Once again.

@SC7639
Copy link

SC7639 commented Sep 24, 2015

Thanks that's what I was looking for πŸ‘

@jcabasc
Copy link

jcabasc commented Mar 11, 2016

πŸ‘

@Shenglian
Copy link

thanks for sharing πŸ‘

@ronak-8699
Copy link

Great !!!!!

@kstarzyk
Copy link

Nice one, thanks

@scc0309
Copy link

scc0309 commented May 30, 2016

God Bless you~

@mattiaerre
Copy link

if you are interested I made and express middleware based on this gist; you can find it here: https://github.com/mattiaerre/express-favicon-short-circuit

// cc @kentbrew

@damirkotoric
Copy link

Worth noting that this only works if you call return form the main app.js file. I put the above code in a separate router.js file, and it didn't work as expected.

@DivideBySara
Copy link

DivideBySara commented Jul 29, 2017

@damirkotoric Where would I call return from my server.js file? I'm new to backend Node.js. Installing @mattiaerre 's express-favicon-short-circuit middleware did not help, and I've already posted to stackoverflow.com, so I am on the hunt for answers to this favicon problem. This is the project I'm working on.

@Fraasi
Copy link

Fraasi commented Nov 13, 2017

Hallelujah!!!

@Awais-cb
Copy link

Awais-cb commented Dec 3, 2017

thanks man

@TeamParkIt
Copy link

Thanks a million. This was driving me insane

@YaninaProtskaya
Copy link

Thank you very much! ^_^

@vikkrantxx7
Copy link

Thanks so much .. I was wondering why my page's visitor count was increasing twice on a single request.

@varun-manjunath
Copy link

I read up on StackOverFlow that 204 (No Content) is a better response status than 200 (Success) for silencing the favicon problem! Just saying. good solution, I just like the semantics implied by status 204. :)

@woody180
Copy link

Great approach. Thank you

@Michael-Yimam
Copy link

Thank You.

@lucierabahi
Copy link

πŸ‘ Thanks!

@rhernandog
Copy link

Still useful, thanks good Sir!!! πŸ‘ πŸ‘

@skirankumar7
Copy link

Thanks much πŸ‘ πŸ‘ πŸ‘

@leomiranda
Copy link

Great man, thank you!

@Alik64
Copy link

Alik64 commented May 2, 2022

Exactly what i was looking for! Thanks ! πŸ‘

@souli2020
Copy link

souli2020 commented Feb 20, 2023

I think the solution above don't avoid the favico requests @ least in my case! the solution that i came up with is adding an else statement in the end of my code to avoid all urls that i don't want

const http = require('http');

const server = http.createServer((req, res) => {
    console.log(req.url)
    console.log('user hit the server')
    if (req.url === '/') {


        res.writeHead(200,
            {
                'content-type': 'text/html',

            })
        
        res.write(`<h1>home page</h1>`)
         res.end()
    }
    else {
        res.writeHead(
                404,
            { 'Content-Type': 'text/html' }
        )
        res.write('<h2>Page not found!</h2>');
        res.end()
    }

})
server.listen(5000)`

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment