Skip to content

Instantly share code, notes, and snippets.

Embed
What would you like to do?
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/');
@shilov

This comment has been minimized.

Copy link

@shilov shilov commented Oct 17, 2011

Simple and sweet, thanks for sharing!

@kentbrew

This comment has been minimized.

Copy link
Owner Author

@kentbrew kentbrew commented Oct 20, 2011

Glad it was useful!

@shilov

This comment has been minimized.

Copy link

@shilov shilov commented Oct 20, 2011

In case someone stumbles upon this in the future.. If you are running nginx in front of node.js you can also block favicon requests by adding this line:

location = /favicon.ico { access_log off; log_not_found off; }
@kentbrew

This comment has been minimized.

Copy link
Owner Author

@kentbrew kentbrew commented Oct 30, 2011

Wonderful, thanks.

@jimthedev

This comment has been minimized.

Copy link

@jimthedev jimthedev commented Oct 16, 2012

This was very helpful. Thank you.

@leandrodeleite

This comment has been minimized.

Copy link

@leandrodeleite leandrodeleite commented Oct 28, 2012

Thanks!

@billyeh

This comment has been minimized.

Copy link

@billyeh billyeh commented Nov 28, 2012

Thanks. This is exactly what I was looking for. Wish there were more useful, small code snippets like this around the Net.

@bloyot

This comment has been minimized.

Copy link

@bloyot bloyot commented Feb 11, 2013

Thanks so much! Exactly what I was looking for.

@yooodooo

This comment has been minimized.

Copy link

@yooodooo yooodooo commented Mar 30, 2013

helpful,thanks!

@akochepasov

This comment has been minimized.

Copy link

@akochepasov akochepasov commented Apr 6, 2013

Great and simple! Thank you.

@gbmhunter

This comment has been minimized.

Copy link

@gbmhunter gbmhunter commented Oct 2, 2013

Thanks for this! Chrome causes this issue.

@pavelnikolov

This comment has been minimized.

Copy link

@pavelnikolov pavelnikolov commented Dec 6, 2013

If you are using express you can do it like this

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

This comment has been minimized.

Copy link

@flpms flpms commented Jul 3, 2014

Great Solution without express! Thanks!

@radicalsauce

This comment has been minimized.

Copy link

@radicalsauce radicalsauce commented Oct 9, 2014

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

@SarasArya

This comment has been minimized.

Copy link

@SarasArya SarasArya commented Jun 14, 2015

Thanks... Once again.

@SC7639

This comment has been minimized.

Copy link

@SC7639 SC7639 commented Sep 24, 2015

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

@jcabasc

This comment has been minimized.

Copy link

@jcabasc jcabasc commented Mar 11, 2016

๐Ÿ‘

@Shenglian

This comment has been minimized.

Copy link

@Shenglian Shenglian commented Apr 5, 2016

thanks for sharing ๐Ÿ‘

@ronak-8699

This comment has been minimized.

Copy link

@ronak-8699 ronak-8699 commented Apr 7, 2016

Great !!!!!

@kstarzyk

This comment has been minimized.

Copy link

@kstarzyk kstarzyk commented May 11, 2016

Nice one, thanks

@scc0309

This comment has been minimized.

Copy link

@scc0309 scc0309 commented May 30, 2016

God Bless you~

@mattiaerre

This comment has been minimized.

Copy link

@mattiaerre mattiaerre commented Aug 26, 2016

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

This comment has been minimized.

Copy link

@damirkotoric damirkotoric commented May 12, 2017

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

This comment has been minimized.

Copy link

@DivideBySara 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

This comment has been minimized.

Copy link

@Fraasi Fraasi commented Nov 13, 2017

Hallelujah!!!

@Awais-cb

This comment has been minimized.

Copy link

@Awais-cb Awais-cb commented Dec 3, 2017

thanks man

@TeamParkIt

This comment has been minimized.

Copy link

@TeamParkIt TeamParkIt commented May 24, 2018

Thanks a million. This was driving me insane

@YaninaProtskaya

This comment has been minimized.

Copy link

@YaninaProtskaya YaninaProtskaya commented Jul 19, 2018

Thank you very much! ^_^

@vikkrantxx7

This comment has been minimized.

Copy link

@vikkrantxx7 vikkrantxx7 commented Jul 30, 2018

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

@varun-manjunath

This comment has been minimized.

Copy link

@varun-manjunath varun-manjunath commented Nov 8, 2018

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

This comment has been minimized.

Copy link

@woody180 woody180 commented Apr 13, 2019

Great approach. Thank you

@Michael-Yimam

This comment has been minimized.

Copy link

@Michael-Yimam Michael-Yimam commented May 4, 2019

Thank You.

@lucierabahi

This comment has been minimized.

Copy link

@lucierabahi lucierabahi commented Sep 16, 2019

๐Ÿ‘ Thanks!

@rhernandog

This comment has been minimized.

Copy link

@rhernandog rhernandog commented Dec 1, 2019

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

@skirankumar7

This comment has been minimized.

Copy link

@skirankumar7 skirankumar7 commented Feb 4, 2020

Thanks much ๐Ÿ‘ ๐Ÿ‘ ๐Ÿ‘

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