Most of the HTTP Servers I know send their application name and version in response http headers as default behaviour. (Nginx, IIS, Apache etc.) Of course we can change the default behaviour but I wonder why they send these information? Does it matter which HTTP Servers we use to the requesters?

The only reason I can think of is to allow analytics services to keep track of which HTTP Servers are widely used by websites but otherwise these information are unnecessary for most of the requests and when an attacker figures out a specific version of a HTTP Server has a bug, he can easily find websites which uses that version and use that information against these websites.


Back in the early days of the internet, server operators didn't have to worry about hordes of random attackers trying to break into their web site. The server name/version information was provided as a courtesy, and perhaps as a form of advertising as well.

Early versions of the Netscape web browser had an address bar with a label that read "Location:". However, when connecting to a server using software produced by the same company, the word "Location:" would change to "Netsite:"[1] (the server software was called Netsite). This was made possible by the server header field.

  1. Happy Run Some Old Web Browsers Day!

The server header can also be handy when standing up and troubleshooting non-trivial setups and DNS issues. It can help tell you if a request is hitting the right at crucial junctures. We send a number of custom headers to help with this sort of issue as well but the out of the box ones can be handy too.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.