Glossar

Die Schreibregel hinter Referer vs. Referrer

Taras Shynkarenko
Taras Shynkarenko
•Aktualisiert: •8 Min. Lesezeit
Die Schreibregel hinter Referer vs. ReferrerDie Schreibregel hinter Referer vs. Referrer

TL;DR, Kurzantwort

8 Min. Lesezeit

Der HTTP-Request-Header heißt Referer, ein Tippfehler, den RFC 1945 im Mai 1996 festhielt und den RFC 9110 auch 2022 noch mit einem "[sic]" mitführt. Später geprägte Namen nutzen die Wörterbuch-Schreibweise: der Header Referrer-Policy, das Attribut referrerpolicy, rel="noreferrer", document.referrer und die Option referrer der Fetch API. Servervariablen, die aus dem rohen Header abgeleitet sind, etwa HTTP_REFERER in PHP und Django, erben den Tippfehler.

Welche Schreibweise ist richtig, Referer oder Referrer?

Die kurze Antwort auf Referer vs. Referrer lautet, dass beide Schreibweisen richtig sind, jede an ihrem Platz: Der HTTP-Request-Header heißt Referer, mit einem einzelnen r in der Mitte, und fast jeder danach geprägte Name, darunter document.referrer, der Header Referrer-Policy und das Attribut referrerpolicy, nutzt die Wörterbuch-Schreibweise. Die falsch geschriebene Form ist der Header-Name, der über die Leitung geht. Die richtige Form ist das, was Entwickler in HTML, JavaScript und Response-Header tippen.

Ein Test deckt die meisten Fälle ab. Wenn Sie den rohen Request-Header lesen oder schreiben oder eine daraus gebaute Servervariable, schreiben Sie Referer. Wenn Sie irgendetwas anderes benennen, schreiben Sie referrer. Die Tabelle weiter unten zeigt, wo dieser Test gilt und wo ein Framework ihn verbiegt.

Woher kommt der Tippfehler in Referer?

Der Tippfehler gelangte mit RFC 1945 in die schriftliche Überlieferung, dem HTTP/1.0-Dokument von Tim Berners-Lee, Roy Fielding und Henrik Frystyk vom Mai 1996. Abschnitt 10.13 definiert das Feld ohne jeden Kommentar zur Schreibweise:

Referer        = "Referer" ":" ( absoluteURI | relativeURI )
 
Referer: http://www.w3.org/hypertext/DataSources/Overview.html

RFC 1945 war nie ein Standard. Sein Statusvermerk sagt: "This memo provides information for the Internet community. This memo does not specify an Internet standard of any kind." Das Dokument beschrieb HTTP so, wie Browser und Server es bereits betrieben, der Header-Name war also schon im Produktivverkehr, bevor ihn jemand aufschrieb. Ihn auf dem Papier zu korrigieren, hätte jeden Server gebrochen, der ihn bereits las.

Das erste Eingeständnis kam acht Monate später. RFC 2068, die erste HTTP/1.1-Spezifikation und die erste auf dem Standards Track, datiert auf Januar 1997, eröffnet Abschnitt 14.37 mit "The Referer[sic] request-header field allows the client to specify, for the server's benefit, the address (URI) of the resource from which the Request-URI was obtained (the "referrer", although the header field is misspelled.)" RFC 2616 wiederholte diesen Satz im Juni 1999.

Die aktuelle Spezifikation behält den Tippfehler und das Geständnis. RFC 9110, HTTP Semantics, datiert auf Juni 2022 und veröffentlicht als Internet Standard 97, eröffnet Abschnitt 10.1.3 mit "The "Referer" [sic] header field allows the user agent to specify a URI reference for the resource from which the target URI was obtained (i.e., the "referrer", though the field name is misspelled)." Sechsundzwanzig Jahre nach RFC 1945 annotieren die Herausgeber den Namen immer noch, statt ihn umzubenennen, weil eine Umbenennung genau den einen String ändern würde, nach dem jeder Server sucht.

Referer in den Spezifikationen, 1996 bis 2022
1
RFC 1945, Mai 1996. Definiert Referer in Abschnitt 10.13, ohne die Schreibweise zu kommentieren.
2
RFC 2068, Januar 1997. Die erste HTTP/1.1-Spezifikation ergänzt [sic] und nennt das Header-Feld falsch geschrieben.
3
RFC 2616, Juni 1999. Wiederholt denselben Satz.
4
RFC 9110, Juni 2022. Internet Standard 97 behält den Tippfehler und das [sic].
Der Name wurde kommentiert, nie geändert, weil jeder Server genau diese Zeichenfolge abfragt.

Welche Namen nutzen welche Schreibweise?

Jeder Name, den die Webplattform nach dem Header hinzugefügt hat, nutzt die Wörterbuch-Schreibweise, und jeder serverseitige Name, der mechanisch aus dem Header gebaut wird, behält den Tippfehler.

Wo Sie ihm begegnenExakter NameSchreibweiseQuelle
HTTP-Request-HeaderRefererfalsch geschriebenRFC 9110, Abschnitt 10.1.3
HTTP-Response-HeaderReferrer-PolicyrichtigW3C Referrer Policy
Richtlinie für das HTML-Dokument<meta name="referrer">richtigW3C Referrer Policy, MDN
HTML-AttributreferrerpolicyrichtigW3C Referrer Policy, MDN
HTML-Linktyprel="noreferrer"richtigHTML Standard
DOM-Propertydocument.referrerrichtigMDN
Fetch APIRequest.referrer, referrer, referrerPolicyrichtigMDN
GA4-Event-Parameterpage_referrerrichtigGA4-Erfassungslimits
PHP$_SERVER['HTTP_REFERER']falsch geschriebenPHP-Handbuch
Djangorequest.META['HTTP_REFERER']falsch geschriebenDjango-Doku
Expressreq.get('Referer') oder req.get('Referrer')beide akzeptiertExpress-Quellcode
Firefox-Einstellungnetwork.http.referer.defaultPolicyfalsch geschriebenMDN

Der Entwurf der W3C Referrer Policy benennt die Entscheidung in seinen eigenen Grammatikhinweisen: "The header name does not share the HTTP Referer header's misspelling." MDN sagt dasselbe auf seiner Seite zu Referrer-Policy: "The Referrer-Policy header does not share this misspelling."

Die serverseitigen Namen erben den Tippfehler über eine Benennungsregel, nicht über eine Entscheidung. Das PHP-Handbuch sagt, dass PHP $_SERVER-Einträge anlegt, die "named HTTP_ followed by the header name, capitalized and with underscores instead of hyphens," sind, der Header Referer kommt also als HTTP_REFERER an. Die Request-Referenz von Django beschreibt HTTP_REFERER als "The referring page, if any."

Express geht den anderen Weg und akzeptiert beide. Der Docblock zu req.get im Express-Quellcode lautet "The Referrer header field is special-cased, both Referrer and Referer are interchangeable," und der Code gibt this.headers.referrer || this.headers.referer zurück. Diese Reihenfolge bedeutet, dass ein Request mit einem Header, der wörtlich Referrer heißt, gegenüber dem Standard-Header gewinnt, was nur zählt, wenn ein Client den nicht standardkonformen Namen absichtlich sendet.

Ein Entwickler liest Code auf einem Monitor und sucht nach einem Header-Lookup, das nichts zurückgibt.

Verursacht der Tippfehler echte Bugs?

Der Tippfehler verursacht drei Bugs, die im Code-Review immer wieder auftauchen, und nur einer davon betrifft das fehlende r.

Header-Abfragen, die nichts zurückgeben. Code, der aus einer rohen Header-Map einen Header namens referrer liest, bekommt ein leeres Ergebnis, weil RFC 9110 nur Referer definiert und Browser genau diesen Namen senden. Express verdeckt das, indem es beide Namen prüft. PHP und Django stellen nur HTTP_REFERER bereit.

Der Versuch, den Header aus JavaScript zu setzen. MDN führt Referer als verbotenen Request-Header, ihn in den Headern von fetch() mitzugeben, ändert also nichts an dem, was der Browser sendet. Für diese Aufgabe gibt es die Option referrer auf RequestInit. MDN dokumentiert drei Arten von Werten: "A same-origin relative or absolute URL" setzt den Header, "An empty string" lässt ihn weg, und about:client nutzt den Standard für den Request-Kontext, der auch gilt, wenn die Option fehlt.

Der Bindestrich, nicht das r. MDN warnt: "the noreferrer link relation is written without a dash. When you specify the referrer policy for the entire document with a <meta> element, it should be written with a dash: <meta name="referrer" content="no-referrer">." rel="noreferrer" und content="no-referrer" sind also beide richtig, und wer sie vertauscht, bewirkt stillschweigend nichts.

Flowsery
Flowsery

Jetzt 14 Tage kostenlos testen

Echtzeit-Dashboard

Zielverfolgung

Cookie-freies Tracking

Was gibt document.referrer zurück?

document.referrer gibt die Adresse der Seite zurück, die auf die aktuelle Seite verlinkt hat, als String. MDN sagt: "The value is an empty string if the user navigated to the page directly (not through a link, but, for example, by using a bookmark)." Das Beispiel von MDN macht das Kürzen sichtbar: Nach einem Klick von einem MDN-Artikel auf w3.org gibt die Property auf der neuen Seite "the previous domain like developer.mozilla.org" aus, nicht die volle Artikel-URL.

Dieses Kürzen kommt von der Referrer Policy, die auch den Header steuert. Der W3C-Entwurf sagt "The default referrer policy is "strict-origin-when-cross-origin"", und MDN beschreibt diese Policy so: "Send the origin, path, and query string when performing a same-origin request. For cross-origin requests send the origin (only) when the protocol security level stays same (HTTPS→HTTPS). Don't send the Referer header to less secure destinations (HTTPS→HTTP)." Clientseitige Analytics-Skripte lesen document.referrer, Server-Logs lesen Referer. Unter der Standard-Policy sehen beide bei websiteübergreifenden Besuchen einen Hostnamen und bei einem Downgrade auf HTTP nichts. Wie aus diesem Hostnamen ein Kanal wird, erklärt was als Referral-Traffic zählt, und was passiert, wenn er leer ist, erklärt Direct Traffic.

Zwei Kollegen vergleichen ausgedruckte Dokumente an einem Schreibtisch, wie Redakteure, die prüfen, wo sich zwei Spezifikationen widersprechen.

Wo widersprechen sich die Spezifikationen?

Die Spezifikationen widersprechen sich an zwei Stellen, und beide beeinflussen, was ein Analytics-Tool sehen kann.

Die erste ist RFC 9110 gegen den Browser-Standard. RFC 9110 sagt: "A user agent SHOULD NOT send a Referer header field if the referring resource was accessed with a secure protocol and the request target has an origin differing from that of the referring resource, unless the referring resource explicitly allows Referer to be sent." Die W3C-Standard-Policy sendet genau bei diesem Request den Origin, von einer HTTPS-Seite zu einem anderen HTTPS-Origin, ohne ausdrückliche Erlaubnis der Seite. Beide Texte sind gültig. Browser folgen dem W3C-Standard, und deshalb zeigen Referral-Reports weiterhin Hostnamen. Beim Downgrade sind sich beide Dokumente einig, dort sagt RFC 9110, ein User Agent "MUST NOT send a Referer header field in an unsecured HTTP request if the referring resource was accessed with a secure protocol."

Die zweite betrifft die Frage, welche Elemente noreferrer akzeptieren. Drei Quellen nennen drei Listen:

QuelleElemente, die sie für noreferrer aufführt
HTML Standard, Abschnitt zu Linktypena, area, form (auf link als "not allowed" markiert)
W3C Referrer Policy Editor's Draft, 20. März 2026a, area
MDN, Seite zu Referrer-Policya, area, link

Der HTML Standard definiert die Linktypen, also ist seine Liste maßgeblich: "The noreferrer keyword may be used with a, area, and form elements." MDNs eigene Seite zu rel="noreferrer" stimmt mit dem HTML Standard überein, womit die MDN-Seite zu Referrer-Policy die Ausnahme bleibt.

Für Kampagnen-Traffic lohnt sich dieser Kampf nicht. Ein gekürzter oder fehlender Referrer lässt sich im Nachhinein nicht wiederherstellen, und ein UTM-Tag am Link transportiert die Quelle, egal was die Policy entfernt.

Häufig gestellte Fragen

Heißt es Referer oder Referrer in einem HTTP-Request?

Der Request-Header heißt Referer, die einzige Schreibweise, die RFC 9110 definiert, und die, die Browser senden. RFC 9110 markiert den Namen mit "[sic]" und erklärt, dass der Feldname falsch geschrieben ist. Servervariablen, die aus diesem Header gebildet werden, etwa HTTP_REFERER in PHP, behalten den Tippfehler. Später geprägte Namen nutzen Referrer, etwa der Response-Header Referrer-Policy.

Warum wurde der Tippfehler in Referer nie korrigiert?

Der Header war bereits im Produktivverkehr, als RFC 1945 ihn im Mai 1996 dokumentierte, und jeder Server liest ihn unter genau diesem Namen. RFC 2068 fügte im Januar 1997 ein "[sic]" hinzu, und jede HTTP-Spezifikation seitdem hat die Anmerkung beibehalten, statt das Feld umzubenennen.

Kann ich den Referer-Header mit fetch() setzen?

Nein, weil MDN Referer als verbotenen Request-Header führt, der Browser ignoriert ihn also im Objekt headers. Nutzen Sie stattdessen die Option referrer auf dem Request. Ein leerer String lässt den Header weg, eine URL mit demselben Origin setzt ihn.

Nutzt der Header Referrer-Policy die falsche Schreibweise?

Nein. Die Spezifikation W3C Referrer Policy stellt fest: "The header name does not share the HTTP Referer header's misspelling." Dasselbe gilt für das Attribut referrerpolicy, den Meta-Namen referrer und rel="noreferrer".

Warum ist document.referrer leer?

document.referrer ist leer, wenn der Besuch keine verweisende Seite hatte, etwa bei einem Lesezeichen oder einer eingetippten Adresse, und wenn eine Policy oder das Markup ihn unterdrückt hat. Ein Link mit rel="noreferrer", eine Policy no-referrer und eine HTTPS-Seite, die auf eine HTTP-Seite verlinkt, erzeugen unter den Standardregeln alle einen leeren Wert.

Warum nennt PHP ihn HTTP_REFERER?

PHP bildet $_SERVER-Schlüssel aus den Namen der Request-Header, indem es HTTP_ voranstellt, in Großbuchstaben umwandelt und Bindestriche durch Unterstriche ersetzt. Der Header heißt Referer, also lautet der Schlüssel HTTP_REFERER. Django folgt in request.META demselben Muster.

Welche Referrer-Policy gilt in Browsern standardmäßig?

Der W3C-Entwurf legt strict-origin-when-cross-origin als Standard fest. Bei Same-Origin-Anfragen sendet er Origin, Pfad und Query-String. Bei Cross-Origin-Anfragen sendet er nur die Origin, solange das Sicherheitsniveau des Protokolls gleich bleibt, und von HTTPS zu HTTP sendet er keinen Referer-Header.

Flowsery
Flowsery

Jetzt 14 Tage kostenlos testen

Echtzeit-Dashboard

Zielverfolgung

Cookie-freies Tracking

Was ist der Unterschied zwischen rel="noreferrer" und no-referrer?

rel="noreferrer" ist eine Link-Relation und wird ohne Bindestrich geschrieben. no-referrer ist ein Policy-Wert, daher lautet die dokumentweite Form <meta name="referrer" content="no-referrer"> mit Bindestrich. Vertauscht man beide, passiert stillschweigend nichts.

Akzeptiert Express sowohl Referer als auch Referrer?

Express akzeptiert beide. Der Docblock von req.get nennt die beiden Namen austauschbar, und der Code gibt this.headers.referrer || this.headers.referer zurück. Ein Header, der wörtlich Referrer heißt, gewinnt gegen den Standard-Header.

Welche RFC hat den Referer-Header zuerst definiert?

RFC 1945, das HTTP/1.0-Dokument vom Mai 1996, definiert ihn in Abschnitt 10.13 und sagt nichts zur Schreibweise. RFC 2068 ergänzte das [sic] im Januar 1997. RFC 9110 trägt es im Juni 2022 immer noch.

War dieser Artikel hilfreich?

Teilen Sie uns Ihre Meinung mit!

Sehen Sie uns öfter bei Google

Ein Klick macht Flowsery zu einer bevorzugten Quelle. Unsere Artikel stehen dann weiter oben in Ihren Top-Meldungen, im KI-Modus und in den KI-Übersichten.

Bevor Sie gehen...

Flowsery

Flowsery

Umsatzorientierte Analysen für Ihre Website

Verfolgen Sie jeden Besucher, jede Quelle und jede Conversion in Echtzeit. Einfach, leistungsstark und komplett ohne Cookies.

Echtzeit-Dashboard

Zielverfolgung

Cookie-freies Tracking

Verwandte Glossarbegriffe

Was als Referral-Traffic zählt und was unbemerkt herausfälltWas als Referral-Traffic zählt und was unbemerkt herausfällt
Glossar

Was als Referral-Traffic zählt und was unbemerkt herausfällt

Über Referral-Traffic entscheiden zwei verschiedene Regeln. GA4 liest das Medium, Matomo den Referrer-Host, und der Referer-Header kappt fast die ganze URL.

•9 Min. Lesezeit
Warum Direct Traffic der Sammeltopf für alles ist, was Analytics nicht zuordnen konnteWarum Direct Traffic der Sammeltopf für alles ist, was Analytics nicht zuordnen konnte
Glossar

Warum Direct Traffic der Sammeltopf für alles ist, was Analytics nicht zuordnen konnte

Sessions landen in Direct Traffic, wenn weder Referrer noch Kampagnen-Tag den Sprung überleben. Ursachen: Referrer-Policies, Apps, PDFs, Redirects, QR-Codes.

•8 Min. Lesezeit
Warum Ihre GA4-Absprungrate nur die umgedrehte Engagement-Rate istWarum Ihre GA4-Absprungrate nur die umgedrehte Engagement-Rate ist
Glossar

Warum Ihre GA4-Absprungrate nur die umgedrehte Engagement-Rate ist

Ihre GA4-Absprungrate ist der Anteil nicht engagierter Sitzungen. Wie Google sie definiert, was anders ist als in Universal Analytics und wo Sie sie ergänzen.

•7 Min. Lesezeit
Was aus Chromes Abschaffung der Third-Party-Cookies wurdeWas aus Chromes Abschaffung der Third-Party-Cookies wurde
Glossar

Was aus Chromes Abschaffung der Third-Party-Cookies wurde

Chromes Abschaffung der Third-Party-Cookies lief vom Plan 2020 bis zur Kehrtwende 2025. Jede Ankündigung von Google, was Chrome heute tut und die Folgen.

•8 Min. Lesezeit
Wie Seiten pro Session berechnet werden und was die Zahl über einen Besuch sagtWie Seiten pro Session berechnet werden und was die Zahl über einen Besuch sagt
Glossar

Wie Seiten pro Session berechnet werden und was die Zahl über einen Besuch sagt

In GA4 heißen Seiten pro Session Views per session: Seiten- und Screen-Aufrufe geteilt durch Sessions. Die Formel, der Fundort und die Deutung.

•7 Min. Lesezeit
Was Klick-Tracking auf Websites erfasst und welche Klicks verloren gehenWas Klick-Tracking auf Websites erfasst und welche Klicks verloren gehen
Glossar

Was Klick-Tracking auf Websites erfasst und welche Klicks verloren gehen

Klick-Tracking erfasst, welches Element ein Besucher auf welcher Seite wann angeklickt hat. Die drei Methoden, die Felder und warum Klicks verschwinden.

•8 Min. Lesezeit

Verwandte Artikel