Am Ursprungstest für die Accept-Language-Reduzierung teilnehmen

Mit Accept-Language Reduction sollen passive Fingerprinting-Oberflächen reduziert werden. Dazu werden die Spracheinstellungen des Nutzers im Accept-Language-Header reduziert und nur eine bevorzugte Sprache des Nutzers gesendet.

Ab Chrome 109 öffnen wir den Ursprungstest für die Accept-Language-Reduktion, damit Websites den reduzierten Accept-Language-Header erhalten können. Dadurch können Websites Probleme erkennen und beheben, bevor die reduzierte Accept-Language in einer zukünftigen Version zum Standardverhalten in Chrome wird. Wenn Sie die Funktion testen möchten, bevor sie für eine stabile Anzahl von Nutzern eingeführt wird, aktivieren Sie sie und testen Sie sie vor dem Veröffentlichungsdatum für Chrome 109 (derzeit für den 10. Januar 2023 geplant).

Unten sehen Sie die Beispiele für den Accept-Language-Header vor und nach der Reduzierung.

Aktuell
Accept-Language: en-GB,en;q=0.9,de;q=0.8,fr;q=0.7
Vorgeschlagen
Accept-Language: en-GB

Im Folgenden finden Sie eine Übersicht über den Ursprungstest und die weitere Vorgehensweise. Du kannst dein Feedback zu dieser Änderung oder zu Problemen, die während des Ursprungstests auftreten, im GitHub-Repository für die Accept-Language Reduction teilen.

Was ist Accept-Language?

Der String Accept-Language wird bei jeder HTTP-Anfrage verwendet und in JavaScript für alle Ressourcen bereitgestellt, die vom Browser geladen werden. Aktuell enthält es alle bevorzugten Sprachen des Nutzers.

Warum wurde Accept-Language reduziert?

Mit Accept-Language Reduction soll die Anzahl passiver Fingerprinting-Oberflächen in Chrome reduziert werden.

Derzeit wird der Accept-Language-Header standardmäßig bei jeder HTTP-Anfrage freigegeben und in JavaScript für alle Ressourcen bereitgestellt, die vom Browser geladen werden. Es enthält alle Spracheinstellungen des Nutzers. Für den Fall, dass Websites mehrsprachige Inhalte anbieten möchten, sendet der Browser nicht die vollständige Liste der vom Nutzer konfigurierten Sprachen, sondern wir führen eine neue Möglichkeit ein, mit der mehrsprachige Inhalte angezeigt werden können. Der Browser übernimmt dann die Verantwortung für die Sprachverhandlung und die Anzeige der bevorzugten Sprache.

Ein weiterer Grund ist, dass die Accept-Language-Header auf vielen Websites gar nicht zur Sprachverhandlung verwendet werden (z. B. verwenden eine Studie nur 7,2% der Top 10.000 Websites Accept-Language). Im Inkognitomodus von Chrome wurde Accept-Language bereits auf eins reduziert.

Was bedeutet das für Webentwickler?

Websites, die für die Sprachverhandlung auf Accept-Language angewiesen sind, sollten sich auf eine reduzierte Accept-Language vorbereiten und die Teilnahme am Ursprungstest in Betracht ziehen. Die reduzierten Accept-Language-Werte werden so angezeigt:

  • Der Accept-Language-HTTP-Anfrageheader.
  • Der JavaScript-Getter navigator.languages.

Der Browser übernimmt die Aushandlung der Sprache und wählt die bevorzugte Sprache des Nutzers aus, die er an Websites senden soll. Dazu müssen Websites zwei Header hinzufügen: Variants (ein neuer Header kennzeichnet Websites, die Sprachen unterstützen) Accept-Language und Content-Language im Antwortheader (siehe detailliertes Beispiel unten).

iOS und WebView sind derzeit nicht in den reduzierten Accept-Language-Abos enthalten und diese Plattformen erhalten weiterhin die vollständige Liste der Accept-Language von Nutzern. Die Unterstützung für diese Plattformen ist für ein späteres Datum geplant.

Ursprungstest für Accept-Language Reduction

Bei einem Ursprungstest muss die teilnehmende Website in ihrer Antwort ein Token bereitstellen, das den Browser auffordert, den angegebenen Test zu aktivieren. Dies bedeutet jedoch, dass bei der ersten Anfrage des Browsers an die Website nicht festgestellt werden kann, ob die Website an einem Ursprungstest teilnimmt. Das bedeutet, dass die erste Anfrage in einer Sitzung nicht den reduzierten Accept-Language header sendet. Anfragen für Unterressourcen auf dieser Seite, sowohl ursprungs- als auch ursprungsübergreifend, erhalten den reduzierten Accept-Language-Header. Nachfolgende Navigationen am selben Ursprung erhalten ebenfalls den reduzierten Accept-Language-Header. Bei ursprungsübergreifenden Navigationen wird der vollständige Header gesendet. Die ursprungsübergreifenden Anfragen innerhalb der Seite (z. B. iFrame-Anfragen von Drittanbietern) senden hingegen weiterhin den reduzierten Accept-Language-Header, wenn die Frame-Anfrage der obersten Ebene ein gültiges Ursprungstesttoken hat.

Dieser Test ähnelt dem Ursprungstest zur User-Agent-Reduktion. Weitere Informationen zur internen Chromium-Implementierung finden Sie unter „Reduce Accept-Language“-HTTP-Header implementieren.

Am Ursprungstest zur Accept-Language Reduction teilnehmen

Weitere Informationen finden Sie unter Erste Schritte mit den Ursprungstests von Chrome. Die wesentlichen Schritte sind jedoch unten aufgeführt.

Schritt 1

Wenn Sie sich für den Ursprungstest registrieren und ein Token für Ihre Domains erhalten möchten, rufen Sie die Seite Trial for Accept-Language Reduction auf.

Schritt 2

Aktualisieren Sie Ihre HTTP-Antwortheader:

  1. Fügen Sie Ihrem HTTP-Antwortheader Origin-Trial: <ORIGIN TRIAL TOKEN> hinzu, wobei <ORIGIN TRIAL TOKEN> das Token enthält, das Sie bei der Registrierung für den Ursprungstest erhalten haben.
  2. Fügen Sie dem HTTP-Antwortheader Content-Language hinzu, um die für die Zielgruppe vorgesehenen Sprachen anzugeben.
  3. Fügen Sie dem HTTP-Antwortheader Variants hinzu, um anzugeben, welche Sprachen von Websites unterstützt werden.
  4. [Optional] Fügen Sie Vary: Accept-Language in Ihre HTTP-Antwort ein, um einen Cache-Schlüssel für die Aushandlung von Inhalten zu erstellen.
  5. Wenn Sie diese Header festlegen, wird nur eine Aushandlung der Browsersprache (möglicher Neustart für die erste Anfrage) für den angegebenen Ursprung ausgelöst. Damit Nutzern auf Websites die richtige Sprachdarstellung angezeigt wird, müssen auch Websites aktualisiert werden, die die Inhalte basierend auf dem „Accept-Language“-Header des Nutzers senden (siehe Beispiel unten).

Schritt 3

Laden Sie Ihre Website in Chrome M109 Beta (oder höher) und erhalten Sie den reduzierten Accept-Language-String.

Sende Probleme oder Feedback an das GitHub-Repository für Accept-Language Reduction.

Demo

Eine Demonstration einer mehrsprachigen Website, für die der Ursprungstest (zusammen mit dem Quellcode) aktiviert wurde, findest du unter https://reduce-accept-language.glitch.me/.

Eine Demo zum Aktivieren und Deaktivieren des Ursprungstests (zusammen mit dem Quellcode) finden Sie unter https://reduce-accept-language-ot.glitch.me/.

Beispielsweise unterstützt example.com ja (Japanisch) und en (Englisch). Eine Anfrage kann so aussehen:

GET / HTTP/1.1
Host: example.com
Accept-Language: en

Die Website weiß, dass der Nutzer Inhalte auf Englisch bevorzugt, basierend auf der Annahmesprache des Nutzers. Die Antwortheader können Folgendes enthalten:

HTTP/1.1 200 OK
Content-Language: en
Variants: Accept-Language=(en ja)
Origin-Token: a-valid-token

Wenn der Nutzer Inhalte in japanischer Sprache bevorzugt, lautet die Anfrage:

GET / HTTP/1.1
Host: example.com
Accept-Language: ja

In diesem Fall antwortet die Website mit Headern für japanische Inhalte:

HTTP/1.1 200 OK
Content-Language: ja
Variants: Accept-Language=(en ja)
Origin-Token: a-valid-token

Auf der Serverseite sucht die Website möglicherweise nach spezifischen Sprachunterstützung, wird aber auf die Standardeinstellung zurückgesetzt, wenn keine Unterstützung erkannt wird:

if(accept_language == 'ja') {
    res.response('ja_page')
}
else {
   res.response('en_page')
}

Im Beispiel oben antwortet example.com entweder auf en oder ja basierend auf dem Wert Accept-Language und verwendet standardmäßig en, wenn keine Übereinstimmung gefunden wird. In diesem Fall können auf der Website basierend auf dem Wert Accept-Language auch Weiterleitungen zu den entsprechenden Sprachseiten bereitgestellt werden: /en oder /ja. Ausführliche Beispiele zu Weiterleitungen finden Sie im Implementierungsdokument.

Support für Ursprungstests von Drittanbietern

Derzeit wird die Registrierung Ihrer Domains als Drittanbieter für die Testversion nicht unterstützt. Wenn Sie einen Dienst betreiben, der ursprungsübergreifend als Unterressource implementiert ist (z. B. Ad Serving oder Analyse), erhalten Sie nur dann den reduzierten Accept-Language-Header, wenn die Website der obersten Ebene am Ursprungstest teilnimmt.

Prüfen, ob der Ursprungstest funktioniert

Die Anleitung zur Fehlerbehebung bei Ursprungstests in Chrome enthält eine vollständige Checkliste für die korrekte Konfiguration Ihres Tokens.

Mehrere Sprachen und ihre Priorität konfigurieren Sie über chrome://settings/languages oder „Einstellungen“ → „Sprachen“. Sie sollten eine Sprache auswählen, die von Ihrer Website nicht unterstützt wird, und diese an den Anfang der Liste verschieben, damit die zusätzliche Neuverhandlung ausgelöst wird.

Die Header der ersten Antwort, die das Ursprungstesttoken enthalten, sollten so aussehen:

Screenshot des Anfrageheaders mit der Reduzierung von Accept-Language.

Die nachfolgenden Anfrage-Header mit der reduzierten Accept-Language sehen so aus:

Die Header der ersten Antwort, die das Ursprungstesttoken enthalten.

Teilnahme am Ursprungstest beenden

Sie können während des Testzeitraums jederzeit die Teilnahme beenden und eine vollständige Liste der Accept-Language des Nutzers erhalten. So beenden Sie die Teilnahme:

  1. Entfernen Sie den Header Origin-Trial für den Accept-Language Reduction-Test aus der HTTP-Antwort.
  2. [Optional] Entfernen Sie den Variants-Header. Dieser wird hinzugefügt, um den Ursprungstest in Ihrer HTTP-Antwort zu aktivieren, wenn Sie diesen Header nicht senden möchten. Sie können dazu auch Variants mit einem leeren Wert verwenden.
  3. [Optional] Entfernen Sie den Content-Language-Header, der in Ihrer HTTP-Antwort hinzugefügt wird, um den Ursprungstest zu aktivieren, wenn Sie diesen Header nicht senden möchten.

Dauer des Ursprungstests

Der Ursprungstest zur Accept-Language-Reduktion dauert mindestens sechs Monate, was etwa sechs Chrome-Meilensteinen entspricht. Der Ursprungstest wird in M109 angezeigt und endet mit M114. Er steht für den letzten Chrome-Release, für den der Test verfügbar ist. An dieser Stelle wertet Chrome das Feedback aus dem Ursprungstest aus, bevor der reduzierte Accept-Language-String schrittweise gesendet wird: Reduzieren Sie zuerst den HTTP-Header Accept-Language und dann die JS-Schnittstelle. Wenn eine Website mehr Zeit für den Test benötigt, kann sie sich für einen nachfolgenden Ursprungstest aktivieren. So kann sie noch mindestens sechs weitere Monate lang auf den vollständigen String Accept-Language zugreifen. Wir werden weitere Details zum Einstellungstest veröffentlichen, sobald er verfügbar ist.

Feedback geben

Sende Probleme oder Feedback an das GitHub-Repository für Accept-Language Reduction.