Примите участие в испытании происхождения программы Accept-Language Reduction

Accept-Language Reduction — это попытка уменьшить количество пассивных поверхностей для снятия отпечатков пальцев путем уменьшения языковых предпочтений пользователя в заголовке Accept-Language и отправки только наиболее предпочтительного языка пользователя (только одного).

Начиная с бета-версии Chrome 109 , мы откроем исходную пробную версию Accept-Language Reduction, позволяющую сайтам получать уменьшенный заголовок Accept-Language . Это позволит сайтам обнаруживать и устранять проблемы до того, как сокращенный Accept-Language станет поведением по умолчанию в Chrome в будущей версии. Чтобы протестировать эту функцию до ее запуска среди стабильной группы населения, обязательно зарегистрируйтесь и протестируйте ее до даты выпуска Chrome 109 ( в настоящее время запланированной на 10 января 2023 г.).

Ознакомьтесь с примерами заголовка Accept-Language до и после сокращения ниже.

Текущий
Accept-Language: en-GB,en;q=0.9,de;q=0.8,fr;q=0.7
Предложенный
Accept-Language: en-GB

Ниже представлен обзор оригинальной пробной версии и чего ожидать. Вы можете поделиться своим отзывом об этом изменении или любых проблемах, с которыми вы столкнулись во время пробной версии Origin, в репозитории Accept-Language Reduction GitHub .

Что такое Accept-Language?

Строка Accept-Language передается в каждом HTTP-запросе и предоставляется в JavaScript всем ресурсам, загружаемым браузером. В настоящее время он содержит все предпочитаемые пользователем языки.

Почему Accept-Language сокращается?

Accept-Language Reduction — это попытка уменьшить количество пассивных поверхностей для снятия отпечатков пальцев в Chrome.

В настоящее время заголовок Accept-Language по умолчанию используется для каждого HTTP-запроса и предоставляется в JavaScript всем ресурсам, загружаемым браузером. Он содержит все языковые настройки пользователя. Вместо того, чтобы браузер отправлял полный список языков, настроенных пользователем, в случае, если сайты хотят предоставлять многоязычный контент, мы представляем для сайтов новый способ указания многоязычного контента, и браузер возьмет на себя ответственность за согласование языка и отображение предпочтительный язык.

Другая причина заключается в том, что многие сайты могут вообще не использовать заголовки Accept-Language для согласования языка (например, одно исследование показывает, что только 7,2% из 10 000 лучших сайтов используют Accept-Language ). Режим Chrome Incognito уже сократил Accept-Language до одного.

Что это значит для веб-разработчиков?

Сайты, использующие Accept-Language для согласования языка, должны подготовиться к получению сокращенного Accept-Language и рассмотреть возможность участия в пробном этапе происхождения. Уменьшенные значения Accept-Language появятся в:

  • Заголовок HTTP-запроса Accept-Language .
  • Метод получения JavaScript navigator.languages .

Браузер возьмет на себя ответственность за согласование языка, чтобы выбрать предпочтительный язык пользователя для отправки на сайты. Чтобы это произошло, сайтам необходимо добавить в заголовок ответа два заголовка Variants (новый заголовок указывает на сайты, поддерживающие языки) Accept-Language и Content-Language (см. подробный пример ниже).

Сокращенные планы Accept-Language в настоящее время не включают iOS и WebView, и эти платформы по-прежнему будут получать полный список пользователей Accept-Language . Поддержка этих платформ запланирована на более поздний срок.

Пробная версия Origin для Accept-Language Reduction

Исходная пробная версия требует, чтобы участвующий сайт предоставил в своем ответе токен, который сообщает браузеру о необходимости включения указанной пробной версии. Однако это означает, что при первоначальном запросе браузера на сайт у него нет возможности узнать, участвует ли сайт в пробной версии источника. Это означает, что первоначальный запрос в сеансе не будет отправлять сокращенный Accept-Language header . Запросы на подресурсы на этой странице, как с одинаковым, так и с перекрестным происхождением, получат уменьшенный заголовок Accept-Language . Последующие переходы с тем же источником также получат сокращенный заголовок Accept-Language . Навигация между источниками вернется к отправке полного заголовка, в то время как запросы между источниками внутри страницы (например, сторонние запросы iframe) по-прежнему будут отправлять уменьшенный заголовок Accept-Language , если запрос кадра верхнего уровня имеет допустимое происхождение. пробный жетон.

Это похоже на пробную версию сокращения исходного кода User-Agent, и если вы хотите узнать больше о внутренней реализации Chromium, вы можете прочитать больше в разделе «Реализация HTTP-заголовка сокращения Accept-Language» .

Примите участие в испытании источника Accept-Language Reduction.

Дополнительные инструкции можно прочитать в разделе Начало работы с пробными версиями Chrome Origin , но основные шаги показаны ниже.

Шаг 1

Чтобы зарегистрироваться для участия в пробной версии Origin и получить токен для своих доменов, посетите страницу Пробная версия Accept-Language Reduction .

Шаг 2

Обновите заголовки HTTP-ответа:

  1. Добавьте Origin-Trial: <ORIGIN TRIAL TOKEN> в заголовок HTTP-ответа, где < ORIGIN TRIAL TOKEN > содержит токен, который вы получили при регистрации для использования пробной версии Origin.
  2. Добавьте Content-Language в заголовок HTTP-ответа, чтобы указать язык(и), предназначенные для аудитории.
  3. Добавьте Variants в заголовок HTTP-ответа, чтобы указать языки, поддерживаемые сайтами.
  4. [Необязательно] Добавьте Vary: Accept-Language в свой HTTP-ответ, чтобы создать ключ кэша для согласования содержимого.
  5. Установка этих заголовков вызовет только согласование языка браузера (потенциальный перезапуск первоначального запроса) для данного источника. Чтобы сайты отображали правильное языковое представление для пользователей, вам также необходимо обновить сайты, отправляющие контент на основе заголовка Accept-Language пользователя (см. пример ниже).

Шаг 3

Загрузите свой веб-сайт в бета-версию Chrome M109 (или более поздней версии) и начните получать сокращенную строку Accept-Language.

О любых проблемах или отзывах отправляйте в репозиторий Accept-Language Reduction на GitHub .

Демо

Демонстрацию многоязычного сайта, который включил пробную версию Origin (вместе с исходным кодом), см. на странице https://reduce-accept-language.glitch.me/ .

Для демонстрации согласия и отказа от пробной версии Origin (вместе с исходным кодом) см. https://reduce-accept-language-ot.glitch.me/ .

Например, example.com поддерживает ja (японский) и en (английский). Запрос может быть:

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

Сайт знает, что пользователь предпочитает контент на английском языке, исходя из языка, на котором он принимает информацию. Заголовки ответа могут включать в себя:

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

Если пользователь предпочитает контент на японском языке, запрос будет таким:

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

В этом случае сайт отвечает заголовками для японского контента:

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

На стороне сервера сайт может искать поддержку определенного языка, но возвращается к значению по умолчанию, если поддержка не обнаружена:

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

В приведенном выше примере example.com отвечает либо en , либо ja в зависимости от значения Accept-Language , по умолчанию используется en ​​если ни одно из них не соответствует. В этом случае сайт также может обеспечивать перенаправление на соответствующие языковые страницы /en или /ja на основе значения Accept-Language . Подробные примеры, связанные с перенаправлениями, см. в документе по реализации .

Поддержка пробной версии стороннего происхождения

В настоящее время мы не поддерживаем регистрацию ваших доменов в качестве третьих лиц для пробной версии . Если вы используете службу, которая реализована как подресурс в разных источниках (например, показ рекламы или аналитика), вы получите уменьшенный заголовок Accept-Language только в том случае, если сайт верхнего уровня участвует в пробной версии источника.

Убедитесь, что исходная пробная версия работает

Руководство по устранению неполадок в пробных версиях Chrome Origin содержит полный контрольный список, позволяющий убедиться, что ваш токен правильно настроен.

Вы настраиваете несколько языков и их приоритет в chrome://settings/languages ​​или Настройки → Языки. Рассмотрите возможность выбора языка, который не поддерживает ваш сайт, и перемещения его в начало списка, чтобы обеспечить запуск дополнительного повторного согласования.

Заголовки исходного ответа, содержащие пробный токен источника, должны выглядеть так:

Скриншот заголовка запроса с сокращенным Accept-Language.

Последующие заголовки запроса, содержащие сокращенный Accept-Language, выглядят так:

Заголовки исходного ответа, содержащие пробный токен источника.

Прекратите участие в пробной версии Origin

В любой момент времени во время пробного периода вы можете прекратить участие и получить полный список языков принятия пользователя. Чтобы прекратить участие:

  1. Удалите заголовок Origin-Trial для пробной версии Accept-Language Reduction из вашего HTTP-ответа.
  2. [Необязательно] Удалите заголовок Variants , который добавляется для согласия на использование пробной версии источника в вашем ответе HTTP, если вы не заинтересованы в отправке этого заголовка. Для этого вы также можете использовать Variants с пустым значением.
  3. [Необязательно] Удалите заголовок Content-Language , который добавляется для согласия на использование пробной версии источника в вашем HTTP-ответе, если вы не заинтересованы в отправке этого заголовка.

Продолжительность пробной версии Origin

Пробная версия Accept-Language Reduction продлится не менее шести месяцев, что соответствует примерно шести этапам Chrome. Исходная пробная версия появится в M109 и закончится в M114 (это означает последнюю версию Chrome, в которой доступна пробная версия). На этом этапе Chrome оценит отзывы о пробной версии источника, прежде чем приступить к поэтапной отправке сокращенной строки Accept-Language: сначала уменьшите HTTP-заголовок Accept-Language, а затем уменьшите интерфейс JS. Если сайту требуется больше времени для тестирования, он может выбрать последующую пробную версию источника устаревания, которая позволит ему получить доступ к полной строке Accept-Language в течение как минимум еще шести месяцев. Мы опубликуем более подробную информацию о пробной версии, когда она будет готова.

Поделиться отзывом

О любых проблемах или отзывах отправляйте в репозиторий Accept-Language Reduction на GitHub .