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

Mit der Accept-Language-Reduzierung soll die Anzahl der Oberflächen für den passiven Fingerabdruck reduziert werden. Dazu werden die Spracheinstellungen des Nutzers in der Kopfzeile von Accept-Language minimiert und nur die am häufigsten verwendete Sprache des Nutzers gesendet.

Ab der Betaversion von Chrome 109 wird der Ursprungstest für die Reduzierung von „Accept-Language“ geöffnet. Websites können dann festlegen, dass der reduzierte Accept-Language-Header empfangen werden soll. So können Probleme auf Websites erkannt und behoben werden, bevor die reduzierte Accept-Language in einer zukünftigen Version von Chrome zum Standardverhalten wird. Wenn Sie die Funktion vor der Einführung in der stabilen Version testen möchten, müssen Sie sie aktivieren und vor dem Veröffentlichungsdatum von Chrome 109 testen (derzeit für den 10. Januar 2023 geplant).

Unten finden Sie Beispiele für Accept-Language-Überschriften vor und nach der Verringerung.

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

Unten findest du eine Übersicht über den Test und was du erwarten kannst. Sie können Ihr Feedback zu dieser Änderung oder zu Problemen, die während des Ursprungstests auftreten, im GitHub-Repository für die Accept-Language-Reduzierung teilen.

Was ist „Accept-Language“?

Der String Accept-Language wird bei jeder HTTP-Anfrage freigegeben und in JavaScript für alle vom Browser geladenen Ressourcen freigegeben. Derzeit enthält sie alle bevorzugten Sprachen des Nutzers.

Warum wird Accept-Language reduziert?

Mit der Accept-Language-Reduzierung soll die Anzahl der Oberflächen für passive Fingerprinting-Methoden in Chrome reduziert werden.

Derzeit wird der Accept-Language-Header standardmäßig bei jeder HTTP-Anfrage freigegeben und in JavaScript für alle vom Browser geladenen Ressourcen freigegeben. Sie enthält alle Spracheinstellungen des Nutzers. Anstatt dass der Browser die vollständige Liste der vom Nutzer konfigurierten Sprachen sendet, wenn Websites mehrsprachige Inhalte bereitstellen möchten, führen wir eine neue Möglichkeit ein, wie Websites mehrsprachige Inhalte angeben können. Der Browser übernimmt dann die Sprachverhandlung und zeigt die bevorzugte Sprache an.

Ein weiterer Grund ist, dass viele Websites die Accept-Language-Header möglicherweise gar nicht für die Sprachverhandlung verwenden. Eine Studie zeigt beispielsweise, dass nur 7,2% der 10.000 wichtigsten Websites Accept-Language verwenden. Im Inkognitomodus von Chrome wurde die Anzahl der Accept-Language-Header bereits auf einen reduziert.

Was bedeutet das für Webentwickler?

Betreiber von Websites, die Accept-Language für die Sprachverhandlung nutzen, sollten sich darauf vorbereiten, weniger Accept-Language zu erhalten, und sollten erwägen, am Test zur Herkunftsermittlung teilzunehmen. Die reduzierten Accept-Language-Werte werden an folgenden Stellen angezeigt:

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

Der Browser übernimmt die Verantwortung für die Sprachverhandlung, um die bevorzugte Sprache des Nutzers auszuwählen, die an Websites gesendet werden soll. Dazu müssen Websites zwei Header hinzufügen: Variants (ein neuer Header, der angibt, dass die Website Sprachen unterstützt) Accept-Language und Content-Language in den Antwortheader (siehe detailliertes Beispiel unten).

Die reduzierten Accept-Language-Abos umfassen derzeit weder iOS noch WebView. Auf diesen Plattformen wird Nutzern weiterhin die vollständige Liste der Accept-Language angezeigt. Die Unterstützung dieser Plattformen ist für später geplant.

Ursprungstest für die Accept-Language-Reduzierung

Für einen Test der Website-Herkunft muss die teilnehmende Website in ihrer Antwort ein Token angeben, das dem Browser mitteilt, den angegebenen Test zu aktivieren. Das bedeutet jedoch, dass bei der ersten Anfrage des Browsers an die Website nicht bekannt ist, ob die Website an einem Ursprungstest teilnimmt. Das bedeutet, dass die anfängliche Anfrage in einer Sitzung nicht die reduzierte Accept-Language header sendet. Anfragen für Unterressourcen auf dieser Seite, sowohl für dieselbe Quelle als auch für andere Quellen, erhalten den reduzierten Accept-Language-Header. Auch nachfolgende Navigationen zum selben Ursprung erhalten den reduzierten Accept-Language-Header. Bei plattformübergreifenden Navigationen wird wieder der vollständige Header gesendet. Bei plattformübergreifenden Anfragen auf der Seite (z. B. iframe-Anfragen von Drittanbietern) wird weiterhin der reduzierte Accept-Language-Header gesendet, wenn die Frame-Anfrage der obersten Ebene ein gültiges Testtoken für den Ursprung hat.

Das ähnelt dem Ursprungstest zur Reduzierung des User-Agents. Weitere Informationen zur internen Chromium-Implementierung finden Sie unter Implementieren des HTTP-Headers „Reduce Accept-Language“.

Am Ursprungstest zur Accept-Language-Reduzierung teilnehmen

Weitere Informationen finden Sie unter Einstieg in Chrome-Ursprungstests. Die wichtigsten Schritte sind unten aufgeführt.

Schritt 1

Wenn Sie sich für den Test registrieren und ein Token für Ihre Domains erhalten möchten, rufen Sie die Seite Test für die Reduzierung der akzeptierten Sprachen auf.

Schritt 2

Aktualisieren Sie Ihre HTTP-Antwortheader:

  1. Füge deinem HTTP-Antwortheader Origin-Trial: <ORIGIN TRIAL TOKEN> hinzu. Dabei enthält <ORIGIN TRIAL TOKEN> das Token, das du bei der Registrierung für den Test erhalten hast.
  2. Fügen Sie Ihrem HTTP-Antwortheader Content-Language hinzu, um die Sprache(n) anzugeben, die für die Zielgruppe bestimmt sind.
  3. Fügen Sie Ihrem HTTP-Antwortheader Variants hinzu, um die von Websites unterstützten Sprachen anzugeben.
  4. [Optional] Füge deiner HTTP-Antwort Vary: Accept-Language hinzu, um einen Cache-Schlüssel für die Inhaltsaushandlung zu erstellen.
  5. Durch das Festlegen dieser Header wird nur die Browsersprachenverhandlung (ein potenzieller Neustart der ursprünglichen Anfrage) für den angegebenen Ursprung ausgelöst. Damit Websites die richtige Sprachversion für die Nutzer anzeigen, müssen Sie auch Websites aktualisieren, 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.

Senden Sie Probleme oder Feedback an das GitHub-Repository für die Accept-Language-Reduzierung.

Demo

Eine Demo einer mehrsprachigen Website, für die die Testversion für den Ursprung aktiviert wurde (zusammen mit dem Quellcode), finden Sie unter https://reduce-accept-language.glitch.me/.

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

example.com unterstützt beispielsweise ja (Japanisch) und en (Englisch). Eine Anfrage kann folgendermaßen sein:

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

Die Website weiß, dass der Nutzer Inhalte auf Englisch bevorzugt, basierend auf der „accept-language“-Angabe des Nutzers. Die Antwortheader können Folgendes umfassen:

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

Wenn der Nutzer japanische Inhalte bevorzugt, sieht die Anfrage so aus:

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 einer bestimmten Sprachunterstützung, greift aber auf eine Standardeinstellung zurück, wenn keine Unterstützung erkannt wird:

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

Im obigen Beispiel gibt example.com je nach Wert von Accept-Language entweder en oder ja zurück. Wenn keine Übereinstimmung gefunden wird, wird standardmäßig en zurückgegeben. In diesem Fall kann die Website je nach Accept-Language-Wert auch Weiterleitungen zu den entsprechenden Sprachseiten /en oder /ja bereitstellen. Ausführliche Beispiele zu Weiterleitungen finden Sie in der Implementierungsdokumentation.

Support für Testversionen von Drittanbietern

Die Registrierung Ihrer Domains als Drittanbieter für den Testzeitraum wird derzeit nicht unterstützt. Wenn Sie einen Dienst betreiben, der als untergeordnete Ressource für mehrere Ursprünge implementiert ist (z. B. Anzeigenbereitstellung oder Analysen), erhalten Sie die reduzierte Accept-Language-Header-Version nur, wenn die Website der obersten Ebene am Test für Ursprünge teilnimmt.

Prüfen, ob der Test der Quelle funktioniert

Im Leitfaden zur Fehlerbehebung bei Chrome-Ursprungstests finden Sie eine vollständige Checkliste, mit der Sie prüfen können, ob Ihr Token richtig konfiguriert ist.

Sie können mehrere Sprachen und ihre Priorität unter chrome://settings/languages oder „Einstellungen“ > „Sprachen“ konfigurieren. Sie können eine Sprache auswählen, die von Ihrer Website nicht unterstützt wird, und sie an den Anfang der Liste setzen, damit die zusätzliche Neuverhandlung ausgelöst wird.

Die Header der ersten Antwort, die das Testtoken für den Ursprung enthalten, sollten so aussehen:

Screenshot des Anfrageheaders mit der reduzierten Accept-Language-Angabe

Nachfolgende Anfrageheader mit der reduzierten Accept-Language-Angabe sehen so aus:

Die Header der ursprünglichen Antwort, die das Testzeitraum-Token des Ursprungs enthalten.

Teilnahme am Ursprungstest beenden

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

  1. Entfernen Sie den Origin-Trial-Header für den Test zur Accept-Language-Reduzierung aus Ihrer HTTP-Antwort.
  2. [Optional] Entfernen Sie den Variants-Header, der zum Aktivieren des Origin Trials in Ihrer HTTP-Antwort hinzugefügt wird, wenn Sie diesen Header nicht senden möchten. Sie können auch Variants mit einem leeren Wert verwenden.
  3. [Optional] Entfernen Sie den Content-Language-Header, der zur Aktivierung des Origin Trials in Ihrer HTTP-Antwort hinzugefügt wird, wenn Sie diesen Header nicht senden möchten.

Dauer des Ursprungstests

Der Ursprungstest für die Accept-Language-Reduzierung dauert mindestens sechs Monate, was etwa sechs Chrome-Meilensteinen entspricht. Der Ursprungstest wird in M109 eingeführt und endet mit M114 (d. h. der letzten Chrome-Version, in der der Test verfügbar ist). An diesem Punkt wertet Chrome das Feedback aus dem Ursprungstest aus, bevor der reduzierte Accept-Language-String in mehreren Schritten gesendet wird: zuerst der Accept-Language-HTTP-Header und dann die JS-Schnittstelle. Wenn für eine Website mehr Zeit für Tests erforderlich ist, kann ein weiterer Testzeitraum für die Einstellung des Ursprungs aktiviert werden. So kann noch mindestens sechs Monate lang auf den vollständigen Accept-Language-String zugegriffen werden. Sobald der Test verfügbar ist, veröffentlichen wir weitere Details dazu.

Feedback geben

Senden Sie Probleme oder Feedback an das GitHub-Repository für die Accept-Language-Reduzierung.