When you click a link, by default your browser sends a request like:
GET /your-page HTTP/1.1
Host: your-site
Referer: https://other-site/with-url
[other headers]
It’s telling the server what page it wants
(
https://your-site/your-page) and it includes a
Referer saying that you came from
https://other-site/with-url.
But why Referer and not Referrer? Let’s look back.
The original version of HTTP had a much simpler request format:
GET /your-page
No
Host:, no
Referer: no headers at all.
This
initial version, implemented in the
WWW browser, became known as
HTTP/0.9. There’s a
design
doc and an
as-implemented
doc, both with no mention of headers.
Right away there were many things people wanted from HTTP that
HTTP/0.9 didn’t support, and there were lots of ideas for the next
version. Not surprisingly some of these initial ideas didn’t look
much like modern HTTP. Updates
To HTTP (last modified 1992-01-07) references
HyperText
Request (last modified 1992-09-22) which has an example:
While you can see what became the From,
Authorization,
Accept,
and User-Agent
headers, this was clearly not in its final form. And there’s no
Referer.
A bit later in 1992, however, we get to what’s going to become
HTTP/1.0: Basic
HTTP as defined in 1992. It does define request headers (spec)
including Referer:
This optional header field allows the client to specify, for the
server’s benefit, the address (URI) of the document (or element
within the document) from which the URI in the request was obtained.
This allows a server to generate lists of back-links to documents, for
interest, logging, etc. It allows bad links to be traced for
maintenance.
By the time anyone noticed the misspelling, it seems this new version
of HTTP was widely enough distributed that no one (unsurprisingly) was
interested in taking on a large coordination project to fix a minor
misspelling. I see Phillip Hallam-Baker writing
in March 1995:
>> Has anyone else noticed that the HTTP
>> header “Referer:” is spelled wrong?
>
>That’s okay, neither one (referer or referrer)
>is understood by “spell” anyway. I say we
>should just blame it on France. ;-)
I also managed to mispell alt.games.mornington.cresent
when I created it. I think this one is down to Tim.
I sent him a note with the suggestion but I don’t
think I gave a name for the field.
RFC 1945 (HTTP/1.0,
May 1996) defines Referer, and RFC 2068 (HTTP/1.1,
January 1997) marks it with [sic]. Presumably so people
would stop writing to them to say “you spelled it wrong”.
Its like when I did the referer field. I got
nothing but grief for my choice of spelling.
I am now attempting to get the spelling corrected
in the OED since my spelling is used several
billion times a minute more than theirs.
Here he says the misspelling was his, while in 1995 he points at
Berners-Lee. Wikipedia
goes with
the 2000 message:
The misspelling of referrer originated in the original proposal by
computer scientist Phillip Hallam-Baker to incorporate the field into
the HTTP specification.
It seems likely to me that Hallam-Baker’s memory of 1992 in 1995,
however, was more accurate than his of 1992 in 2000. So this sounds
like another thing to credit to Berners-Lee.
While the misspelling doesn’t really matter, it’s a fun excuse for
looking back through the documents of the early web. They were
written a long time ago, in computer times, and even though they use
long-deprecated tags like <XMP>
they still render reasonably in modern browsers.
Why “Referer”?
Link post
When you click a link, by default your browser sends a request like:
It’s telling the server what page it wants ( https://your-site/your-page) and it includes a Referer saying that you came from https://other-site/with-url.But why Referer and not Referrer? Let’s look back. The original version of HTTP had a much simpler request format:
No Host:, no Referer: no headers at all. This initial version, implemented in the WWW browser, became known as HTTP/0.9. There’s a design doc and an as-implemented doc, both with no mention of headers.Right away there were many things people wanted from HTTP that HTTP/0.9 didn’t support, and there were lots of ideas for the next version. Not surprisingly some of these initial ideas didn’t look much like modern HTTP. Updates To HTTP (last modified 1992-01-07) references HyperText Request (last modified 1992-09-22) which has an example:
While you can see what became the From, Authorization, Accept, and User-Agent headers, this was clearly not in its final form. And there’s no Referer.
A bit later in 1992, however, we get to what’s going to become HTTP/1.0: Basic HTTP as defined in 1992. It does define request headers (spec) including Referer:
By the time anyone noticed the misspelling, it seems this new version of HTTP was widely enough distributed that no one (unsurprisingly) was interested in taking on a large coordination project to fix a minor misspelling. I see Phillip Hallam-Baker writing in March 1995:
RFC 1945 (HTTP/1.0, May 1996) defines Referer, and RFC 2068 (HTTP/1.1, January 1997) marks it with [sic]. Presumably so people would stop writing to them to say “you spelled it wrong”.
In September 2000 Hallam-Baker write:
Here he says the misspelling was his, while in 1995 he points at Berners-Lee. Wikipedia goes with the 2000 message: It seems likely to me that Hallam-Baker’s memory of 1992 in 1995, however, was more accurate than his of 1992 in 2000. So this sounds like another thing to credit to Berners-Lee.While the misspelling doesn’t really matter, it’s a fun excuse for looking back through the documents of the early web. They were written a long time ago, in computer times, and even though they use long-deprecated tags like <XMP> they still render reasonably in modern browsers.