La réduction de la valeur Accept-Language vise à réduire les surfaces d'empreinte digitale passive en réduisant les préférences linguistiques de l'utilisateur dans l'en-tête Accept-Language
et en n'envoyant que la langue préférée de l'utilisateur (une seule).
À partir de la version bêta de Chrome 109, nous ouvrirons la phase d'évaluation pour la réduction de l'en-tête Accept-Language, ce qui permettra aux sites d'activer la réception de l'en-tête Accept-Language
réduit. Cela permettra aux sites de détecter et de résoudre les problèmes avant que la Accept-Language
réduite ne devienne le comportement par défaut dans Chrome dans une prochaine version. Pour tester la fonctionnalité avant son lancement auprès de la population stable, veillez à l'activer et à la tester avant la date de sortie de Chrome 109 (actuellement prévue pour le 10 janvier 2023).
Consultez les exemples d'en-tête Accept-Language
avant et après la réduction ci-dessous.
Accept-Language: en-GB,en;q=0.9,de;q=0.8,fr;q=0.7
Accept-Language: en-GB
Vous trouverez ci-dessous un aperçu du test de l'origine et ce à quoi vous devez vous attendre. Vous pouvez partager vos commentaires sur ce changement ou tout problème rencontré lors de la phase d'évaluation dans le dépôt GitHub sur la réduction de la valeur Accept-Language.
Qu'est-ce que Accept-Language ?
La chaîne Accept-Language est partagée pour chaque requête HTTP et exposée en JavaScript à toutes les ressources chargées par le navigateur. Actuellement, il contient toutes les langues préférées de l'utilisateur.
Pourquoi Accept-Language est-il réduit ?
La réduction Accept-Language vise à réduire les surfaces d'empreinte digitale passive dans Chrome.
Actuellement, l'en-tête Accept-Language
est partagé par défaut dans chaque requête HTTP et exposé en JavaScript à toutes les ressources chargées par le navigateur. Il contient toutes les préférences linguistiques de l'utilisateur. Au lieu que le navigateur envoie la liste complète des langues que l'utilisateur a configurées au cas où les sites souhaitent fournir du contenu multilingue, nous lançons une nouvelle façon pour les sites d'indiquer du contenu multilingue. Le navigateur se chargera alors de la négociation linguistique et d'afficher la langue préférée.
De plus, de nombreux sites n'utilisent peut-être pas du tout les en-têtes Accept-Language
pour la négociation de la langue (par exemple, une étude indique que seuls 7,2% des 10 000 sites les plus populaires utilisent Accept-Language
). Le mode navigation privée de Chrome a déjà réduit le nombre d'Accept-Language
à un.
Qu'est-ce que cela signifie pour les développeurs Web ?
Les sites qui s'appuient sur Accept-Language
pour la négociation de la langue doivent se préparer à recevoir une Accept-Language
réduite et envisager de participer au test de l'origine. Les valeurs Accept-Language
réduites s'affichent dans:
- En-tête de requête HTTP
Accept-Language
. - Le getter JavaScript
navigator.languages
.
Le navigateur se chargera de la négociation linguistique pour sélectionner la langue préférée de l'utilisateur à envoyer aux sites. Pour ce faire, les sites doivent ajouter deux en-têtes Variants
(un nouvel en-tête indique les sites compatibles avec les langues) Accept-Language
et Content-Language
dans l'en-tête de réponse (voir l'exemple détaillé ci-dessous).
Les forfaits Accept-Language
réduits n'incluent actuellement pas iOS et WebView. Ces plates-formes continueront de recevoir la liste complète des Accept-Language
des utilisateurs.
La prise en charge de ces plates-formes est prévue à une date ultérieure.
Phase d'évaluation pour la réduction Accept-Language
Une évaluation d'origine nécessite que le site participant fournisse un jeton dans sa réponse, qui indique au navigateur d'activer l'évaluation spécifiée. Toutefois, cela signifie que lors de la requête initiale du navigateur vers le site, il n'a aucun moyen de savoir si le site participe à un test d'origine. Cela signifie que la requête initiale d'une session n'enverra pas le Accept-Language header
réduit.
Les requêtes de sous-ressources de cette page, à la fois de même origine et multi-origine, recevront l'en-tête Accept-Language
réduit. Les navigations de même origine ultérieures recevront également l'en-tête Accept-Language
réduit. Les navigations inter-origines reviendront à l'envoi de l'en-tête complet, tandis que les requêtes inter-origines de la page (telles que les requêtes d'iframe tierces) continueront d'envoyer l'en-tête Accept-Language
réduit si la requête de frame de niveau supérieur comporte un jeton d'essai d'origine valide.
Cette approche est semblable à la phase d'évaluation de la réduction de l'user-agent. Pour en savoir plus sur l'implémentation interne de Chromium, consultez Implémenter l'en-tête HTTP "Reduce Accept-Language".
Participer à l'essai Origin Trial de réduction de la valeur Accept-Language
Pour en savoir plus, consultez Premiers pas avec les phases d'évaluation d'origine de Chrome, mais les étapes essentielles sont indiquées ci-dessous.
Étape 1
Pour vous inscrire au test d'origine et obtenir un jeton pour vos domaines, consultez la page Test de réduction de la valeur Accept-Language.
Étape 2
Mettez à jour vos en-têtes de réponse HTTP:
- Ajoutez
Origin-Trial: <ORIGIN TRIAL TOKEN>
à l'en-tête de votre réponse HTTP, où <ORIGIN TRIAL TOKEN
> contient le jeton que vous avez obtenu lors de l'inscription au test d'origine. - Ajoutez
Content-Language
à l'en-tête de réponse HTTP pour indiquer la ou les langues destinées à l'audience. - Ajoutez
Variants
à votre en-tête de réponse HTTP pour indiquer les langues acceptées par les sites. - [Facultatif] Ajoutez
Vary: Accept-Language
à votre réponse HTTP pour créer une clé de cache pour la négociation de contenu. - Le fait de définir ces en-têtes ne déclenchera que la négociation de la langue du navigateur (un redémarrage potentiel de la requête initiale) pour l'origine donnée. Pour que les sites affichent la représentation linguistique correcte pour les utilisateurs, vous devez également mettre à jour les sites qui envoient le contenu en fonction de l'en-tête "Accept-Language" de l'utilisateur (voir exemple ci-dessous).
Étape 3
Chargez votre site Web dans la version bêta de Chrome M109 (ou version ultérieure) et commencez à recevoir la chaîne Accept-Language réduite.
Signalez tout problème ou envoyez vos commentaires sur le dépôt GitHub de la réduction Accept-Language.
Démo
Pour voir une démonstration d'un site multilingue qui a activé le test de l'origine (avec le code source), consultez https://reduce-accept-language.glitch.me/.
Pour une démonstration de l'activation et de la désactivation de l'essai de l'origine (avec le code source), consultez https://reduce-accept-language-ot.glitch.me/.
Par exemple, example.com
est compatible avec ja
(japonais) et en
(anglais). Une requête peut être:
GET / HTTP/1.1
Host: example.com
Accept-Language: en
Le site sait que l'utilisateur préfère le contenu en anglais en fonction de la valeur de la propriété accept-language. Les en-têtes de réponse peuvent inclure les éléments suivants:
HTTP/1.1 200 OK
Content-Language: en
Variants: Accept-Language=(en ja)
Origin-Token: a-valid-token
Si l'utilisateur préfère les contenus en japonais, la requête sera la suivante:
GET / HTTP/1.1
Host: example.com
Accept-Language: ja
Dans ce cas, le site répond avec des en-têtes pour le contenu en japonais:
HTTP/1.1 200 OK
Content-Language: ja
Variants: Accept-Language=(en ja)
Origin-Token: a-valid-token
Côté serveur, le site peut rechercher une prise en charge de langues spécifiques, mais revenir à une valeur par défaut si aucune prise en charge n'est détectée:
if(accept_language == 'ja') {
res.response('ja_page')
}
else {
res.response('en_page')
}
Dans l'exemple ci-dessus, example.com
répond en
ou ja
en fonction de la valeur Accept-Language
, et en
est défini par défaut si aucune correspondance n'est trouvée. Dans ce cas, le site peut également fournir des redirections vers les pages dans la langue correspondante, soit /en
, soit /ja
, en fonction de la valeur Accept-Language
. Pour obtenir des exemples détaillés sur les redirections, consultez le document d'implémentation.
Prise en charge de l'essai de l'origine tierce
Pour le moment, nous n'acceptons pas l'enregistrement de vos domaines en tant que tiers pour l'essai.
Si vous gérez un service implémenté en tant que sous-ressource dans plusieurs origines (comme la diffusion d'annonces ou l'analyse), vous ne recevrez l'en-tête Accept-Language
réduit que si le site de niveau supérieur participe au test d'origine.
Vérifier que le test d'origine fonctionne
Le guide de dépannage des essais d'origine de Chrome fournit une checklist complète pour vous assurer que votre jeton est correctement configuré.
Vous pouvez configurer plusieurs langues et leur priorité à partir de chrome://settings/languages
ou de Paramètres → Langues. Envisagez de sélectionner une langue que votre site n'est pas en mesure de prendre en charge et de la placer en haut de la liste pour vous assurer que la renégociation supplémentaire est déclenchée.
Les en-têtes de la réponse initiale contenant le jeton d'essai d'origine doivent se présenter comme suit:

Les en-têtes de requête suivants contenant l'en-tête Accept-Language réduit se présentent comme suit:

Arrêter de participer à l'essai de l'origine
À tout moment pendant la période d'essai, vous pouvez arrêter de participer et recevoir la liste complète des langues acceptées par l'utilisateur. Pour arrêter de participer:
- Supprimez l'en-tête
Origin-Trial
de votre réponse HTTP pour le test de réduction de la valeur Accept-Language. - [Facultatif] Supprimez l'en-tête
Variants
, qui est ajouté pour activer la phase d'évaluation de l'origine dans votre réponse HTTP si vous ne souhaitez pas envoyer cet en-tête. Vous pouvez également utiliserVariants
avec une valeur vide pour ce faire. - [Facultatif] Supprimez l'en-tête
Content-Language
, qui est ajouté pour activer la phase d'évaluation de l'origine dans votre réponse HTTP si vous ne souhaitez pas envoyer cet en-tête.
Durée de l'essai Origin
L'essai Origin Trial de réduction de Accept-Language durera au moins six mois, ce qui correspond à environ six versions intermédiaires de Chrome. La phase d'évaluation de l'origine apparaîtra dans M109 et se terminera avec M114 (c'est-à-dire la dernière version de Chrome pour laquelle la phase d'évaluation est disponible). À ce stade, Chrome évaluera les commentaires de l'essai d'origine avant d'envoyer la chaîne Accept-Language réduite de manière progressive: réduisez d'abord l'en-tête HTTP Accept-Language, puis l'interface JS. Si un site a besoin de plus de temps pour effectuer des tests, il peut activer un essai d'origine d'abandon ultérieur, ce qui lui permettra d'accéder à la chaîne Accept-Language complète pendant au moins six mois supplémentaires. Nous publierons plus d'informations sur le test de l'abandon lorsque celui-ci sera prêt.
Envoyer des commentaires
Signalez tout problème ou envoyez vos commentaires sur le dépôt GitHub de la réduction Accept-Language.