HTTP for HTML Authors, Part II - HTML with Style | 7
The last notable HTTP header we're going to examine today is the Referer field. Let me take a second to ensure those of you with a good knowledge of English that yes, that is not the right spelling for the word “referrer,” but people have been using the misspelled form for ages and whoever was responsible for the initial blunder has long been lost in oblivion. If this annoys you just think of all the British people out there who have to put up with the color property. If you fall into both categories, you can at least feel smug and superior about it.
But more to the point, what is the Referer header for, you ask. Well, the Referer header indicates which page referred the user (surprise) to this one. So, when a user is viewing a document at the URL http://www.acme.com/foo.html and then clicks on a link in this document and ends up in http://www.slezcorp.com/bar.html, the request for the second page may contain a header that looks like this:
This is the HTTP equivalent of saying “Vinnie sent me.” The Web server's reaction to this will depend entirely on the Web server and its relationship to Vinnie. It might then welcome you in and not only deliver the document you asked for, but also make you a nice cup of tea and let you in on a few secrets. It might slam the door in your face and tell you to get lost. Or, as is the case most of the time, it will just shrug and go about its business, not even bothering to ask who on Earth this Vinnie guy is.
There are very few sites that actually use the Referer header for anything useful, mainly because there's no way to prove that a user is coming from the stated URL, and you have to take him on his word, but also because this field is often optional. In general, you can't always depend on a browser setting the Referer header to what you'd expect it to.
What Referer can be useful for is tracking where your readers are coming from, by keeping logs of the value of the header. Most Web servers allow you to do this very easily. If you set this up, whenever someone links to your site and sends plenty of innocent viewers to an eternity of suffering, or at the very least a few seconds of wasted bandwidth, you'll know who to hold responsible, either to thank him for bringing your “Save the Completlius Uslessius Fungus of North Wahalamabad” campaign to the attention of so many motivated volunteers or destroy him for crashing your network just when you where winning the Unreal Tournament office final.
Produced by Stephanos Piperoglou
Created: January 24, 2001
Revised: February 27, 2001