Weź udział w testowaniu origin na potrzeby redukcji języka Accept-Language

Obniżanie priorytetu nagłówka Accept-Language ma na celu ograniczenie pasywnego tworzenia odcisków palców w witrynach. Polega ono na zmniejszeniu liczby preferencji językowych użytkownika w nagłówku Accept-Language i wysyłaniu tylko preferowanego języka (tylko jednego).

Zaczynając od wersji Chrome 109 w wersji beta, udostępnimy test źródła dla funkcji redukcji języka w nagłówku Accept, aby umożliwić witrynom akceptowanie otrzymywania tego Accept-Languagenagłówka. Dzięki temu właściciele witryn będą mogli wykrywać i rozwiązywać problemy, zanim ograniczone Accept-Language stanie się domyślnym zachowaniem w Chrome w przyszłej wersji. Aby przetestować funkcję przed udostępnieniem jej użytkownikom stabilnej wersji, musisz się zarejestrować i przetestować ją przed datą wydania Chrome 109 (obecnie zaplanowaną na 10 stycznia 2023 r.).

Poniżej znajdziesz przykłady nagłówka Accept-Language przed i po zmniejszeniu.

Obecnie
Accept-Language: en-GB,en;q=0.9,de;q=0.8,fr;q=0.7
Propozycja
Accept-Language: en-GB

Poniżej znajdziesz omówienie testu pochodzenia i informacje o tym, czego możesz się spodziewać. Opinie na temat tej zmiany lub wszelkie problemy, które wystąpią podczas próbnego testowania pochodzenia, możesz przesłać w repertuarze Accept-Language Reduction GitHub.

Co to jest nagłówek Accept-Language?

Ciąg znaków Accept-Language jest udostępniany w każdym żądaniu HTTP i udostępniany w JavaScriptowi wszystkim zasobom wczytywanym przez przeglądarkę. Obecnie zawiera wszystkie preferowane języki użytkownika.

Dlaczego nagłówek Accept-Language jest ściskany?

Obniżanie znaczenia języka w Accept to próba ograniczenia powierzchni odcisków palców w Chrome.

Obecnie nagłówek Accept-Language jest domyślnie udostępniany w przypadku każdego żądania HTTP i jest dostępny w JavaScript dla wszystkich zasobów wczytywanych przez przeglądarkę. Zawiera wszystkie ustawienia językowe użytkownika. Zamiast wysyłania przez przeglądarkę pełnej listy języków skonfigurowanych przez użytkownika na wypadek, gdyby witryny chciały udostępniać treści w wielu językach, wprowadzamy nowy sposób oznaczania przez witryny treści wielojęzycznych. Przejęcie odpowiedzialności za negocjacje językowe i wyświetlanie preferowanego języka zostanie powierzone przeglądarce.

Innym powodem jest to, że wiele witryn może wcale nie używać nagłówków Accept-Language do negocjowania języka (na przykład jedno z badań wskazuje, że tylko 7,2% najpopularniejszych witryn używa nagłówka Accept-Language). Tryb incognito w Chrome już zmniejszył liczbę nagłówków Accept-Language do 1.

Co to oznacza dla programistów stron internetowych?

Witryny, które korzystają z Accept-Language do negocjowania języka, powinny przygotować się na ograniczenie Accept-Language i rozważyć udział w próbnym wdrożeniu origin. Zmniejszone wartości Accept-Language będą się wyświetlać w tych miejscach:

  • Nagłówek żądania HTTP Accept-Language.
  • Właściwość JavaScript navigator.languages.

odpowiedzialność za negocjacje językowe i wybór preferowanego języka użytkownika do wysyłania do witryn. Aby to zrobić, witryny muszą dodać 2 nagłówki: Variants (nowy nagłówek wskazuje, że witryna obsługuje języki) Accept-LanguageContent-Language w nagłówku odpowiedzi (patrz szczegółowy przykład poniżej).

Ograniczone pakiety Accept-Language nie obejmują obecnie iOS i WebView. Na tych platformach nadal będzie wyświetlana pełna lista Accept-Language. Obsługa tych platform jest planowana na późniejszy termin.

Testowanie origin w przypadku funkcji Accept-Language Reduction

Wersja próbna wymaga, aby witryna uczestnicząca w programie przekazała w swojej odpowiedzi token, który informuje przeglądarkę, aby włączyła określoną wersję próbną. Oznacza to jednak, że przeglądarka nie może na podstawie początkowego żądania do witryny określić, czy ta bierze udział w próbie. Oznacza to, że pierwotny żądanie w sesji nie będzie wysyłać zmniejszonego Accept-Language header. Żądania dotyczące zasobów podrzędnych na tej stronie (zarówno z tego samego pochodzenia, jak i z innego) będą otrzymywać skrócony nagłówek Accept-Language. Kolejne przejścia w tej samej domenie będą również zawierać skrócony nagłówek Accept-Language. Nawigacje między domenami będą znów wysyłać pełny nagłówek, a żądania między domenami na stronie (np. żądania iframe firm zewnętrznych) będą nadal wysyłać ograniczony nagłówek Accept-Language, jeśli żądanie ramki najwyższego poziomu ma prawidłowy token próbny pochodzenia.

Jest to podobne do próbnego wdrożenia redukcji klienta użytkownika. Jeśli chcesz dowiedzieć się więcej o wewnętrznej implementacji Chromium, przeczytaj artykuł Wdrażanie redukcji nagłówka HTTP Accept-Language.

Udział w testach wersji próbnej pochodzenia Accept-Language

Więcej wskazówek znajdziesz w artykule Pierwsze kroki z testowaniem origin w Chrome, ale najważniejsze czynności są opisane poniżej.

Krok 1

Aby zarejestrować się w programie próbnym pochodzenia i uzyskać token dla swoich domen, odwiedź stronę Próbna implementacja funkcji akceptacji języka.

Krok 2

Zaktualizuj nagłówki odpowiedzi HTTP:

  1. Dodaj Origin-Trial: <ORIGIN TRIAL TOKEN> do nagłówka odpowiedzi HTTP, gdzie <ORIGIN TRIAL TOKEN> zawiera token uzyskany podczas rejestracji na okres próbny.
  2. Dodaj nagłówek Content-Language do odpowiedzi HTTP, aby wskazać języki przeznaczone dla odbiorców.
  3. Dodaj Variants do nagłówka odpowiedzi HTTP, aby wskazać języki obsługiwane przez witrynę.
  4. [Opcjonalnie] Dodaj Vary: Accept-Language do odpowiedzi HTTP, aby utworzyć klucz pamięci podręcznej do negocjowania treści.
  5. Ustawienie tych nagłówków spowoduje tylko negocjację języka przeglądarki (potencjalny restart dla początkowego żądania) w przypadku danego źródła. Aby witryny wyświetlały użytkownikom treści w odpowiednim języku, musisz też zaktualizować witryny wysyłające treści na podstawie nagłówka Accept-Language w zapytaniu użytkownika (patrz przykład poniżej).

Krok 3

Załaduj swoją witrynę w Chrome M109 Beta (lub nowszej) i zacznij otrzymywać skrócony ciąg znaków Accept-Language.

Wszelkie problemy lub opinie możesz przesyłać do repozytorium GitHub związanego z ograniczaniem nagłówka Accept-Language.

Prezentacja

Demonstrację wielojęzycznej witryny, która wzięła udział w próbnej wersji źródłowej (wraz z kodem źródłowym), znajdziesz na stronie https://reduce-accept-language.glitch.me/.

Demonstrację opcji akceptacji i rezygnacji z okresu próbnego (wraz z kodem źródłowym) znajdziesz na stronie https://reduce-accept-language-ot.glitch.me/.

Na przykład example.com obsługuje ja (język japoński) i en (język angielski). Prośba może być:

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

Witryna wie, że użytkownik preferuje treści w języku angielskim na podstawie jego preferencji językowych. Nagłówki odpowiedzi mogą zawierać:

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

Jeśli użytkownik preferuje treści w języku japońskim, żądanie będzie wyglądać tak:

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

W tym przypadku witryna zwraca nagłówki treści w języku japońskim:

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

Na stronie serwera witryna może szukać obsługi określonego języka, ale w przeciwnym razie wróci do domyślnej:

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

W powyższym przykładzie funkcja example.com zwraca wartość en lub ja w zależności od wartości parametru Accept-Language. Jeśli nie ma dopasowania, domyślnie zwracana jest wartość en. W takim przypadku witryna może też przekierowywać użytkowników do odpowiednich stron w danym języku (/en lub /ja) na podstawie wartości Accept-Language. Szczegółowe przykłady dotyczące przekierowań znajdziesz w dokumentacji dotyczącej implementacji.

Pomoc w przypadku wersji próbnej pochodzącej od zewnętrznego dostawcy

Obecnie nie obsługujemy rejestrowania domen jako domeny zewnętrznej na potrzeby okresu próbnego. Jeśli zarządzasz usługą, która jest implementowana jako subresurs w różnych źródłach (np. wyświetlanie reklam lub usługa analityczna), skrócony nagłówek Accept-Language otrzymasz tylko wtedy, gdy witryna najwyższego poziomu bierze udział w teście.

Sprawdzanie, czy okres próbny pochodzenia działa

Przewodnik na temat rozwiązywania problemów z testami pochodzenia w Chrome zawiera pełną listę kontrolną, która pomoże Ci sprawdzić, czy token jest prawidłowo skonfigurowany.

Wiele języków i ich priorytety możesz skonfigurować w sekcji chrome://settings/languages lub Ustawienia → Języki. Rozważ wybranie języka, którego Twoja witryna nie obsługuje, i przeniesienie go na początek listy, aby wywołać dodatkową renegocjację.

Nagłówki początkowej odpowiedzi zawierające token okresu próbnego źródła powinny wyglądać tak:

Zrzut ekranu nagłówka żądania z ograniczonym polem Accept-Language.

Kolejne nagłówki żądań zawierające ograniczony nagłówek Accept-Language mają postać:

Nagłówki początkowej odpowiedzi zawierające token okresu próbnego źródła.

Przestań uczestniczyć w okresie próbnym Origin

W dowolnym momencie okresu próbnego możesz zrezygnować z usługi i otrzymać pełną listę wartości nagłówka Accept-Language użytkownika. Aby zrezygnować z udziału:

  1. Usuń nagłówek Origin-Trial z testu ograniczania nagłówka Accept-Language z odpowiedzi HTTP.
  2. [Opcjonalnie] Usuń nagłówek Variants, który jest dodawany do odpowiedzi HTTP w ramach testu źródła, jeśli nie chcesz wysyłać tego nagłówka. Aby to zrobić, możesz też użyć wartości pustej Variants.
  3. [Opcjonalnie] Usuń nagłówek Content-Language, który jest dodawany do odpowiedzi HTTP w ramach testu źródła, jeśli nie chcesz go wysyłać.

Czas trwania wersji próbnej Origin

Testowanie origin ograniczonego zakresu języka w zapytaniu Accept-Language potrwa co najmniej 6 miesięcy, co odpowiada około 6 milestone’om Chrome. Testowanie origin pojawi się w wersji M109 i zakończy się w wersji M114 (czyli ostatniej wersji Chrome, w której testowanie jest dostępne). W tym momencie Chrome oceni informacje zwrotne z testu pochodzenia, a potem prześle skrócony ciąg znaków Accept-Language w sposób fazowany: najpierw skróci nagłówek HTTP Accept-Language, a potem interfejs JS. Jeśli witryna potrzebuje więcej czasu na przetestowanie, może wziąć udział w kolejnych testach wersji źródłowej, które pozwolą jej korzystać z pełnego ciągu Accept-Language przez co najmniej kolejne 6 miesięcy. Gdy będzie gotowa, opublikujemy więcej informacji na temat okresu testowego.

Podziel się opinią

Wszelkie problemy lub opinie możesz przesyłać do repozytorium GitHub związanego z ograniczaniem nagłówka Accept-Language.