La reducción de Accept-Language es un esfuerzo por reducir las plataformas de creación pasiva de huellas digitales, ya que reduce las preferencias de idioma del usuario en el encabezado Accept-Language
y solo envía el idioma que el usuario prefiere (solo uno).
A partir de la versión beta de Chrome 109, abriremos la prueba de origen para la reducción de Accept-Language, lo que permitirá que los sitios acepten recibir el encabezado Accept-Language
reducido. Esto permitirá que los sitios descubran y corrijan problemas antes de que la Accept-Language
reducida se convierta en el comportamiento predeterminado de Chrome en una versión futura. Para probar la función antes de que se lance a la población estable, asegúrate de habilitarla y probarla antes de la fecha de lanzamiento de Chrome 109 (programada para el 10 de enero de 2023).
Consulta los ejemplos del encabezado Accept-Language
antes y después de la reducción a continuación.
Accept-Language: en-GB,en;q=0.9,de;q=0.8,fr;q=0.7
Accept-Language: en-GB
A continuación, se incluye una descripción general de la prueba de origen y lo que puedes esperar. Puedes compartir tus comentarios sobre este cambio o cualquier problema que encuentres durante la prueba de origen en el repositorio de GitHub de Accept-Language Reduction.
¿Qué es Accept-Language?
La cadena Accept-Language se comparte en cada solicitud HTTP y se expone en JavaScript a todos los recursos que carga el navegador. Actualmente, contiene todos los idiomas preferidos del usuario.
¿Por qué se reduce Accept-Language?
La reducción de Accept-Language es un esfuerzo por reducir las plataformas de creación de huellas digitales pasivas en Chrome.
Actualmente, el encabezado Accept-Language
se comparte de forma predeterminada en cada solicitud HTTP y se expone en JavaScript a todos los recursos que carga el navegador. Contiene todas las preferencias de idioma del usuario. En lugar de que el navegador envíe la lista completa de idiomas que el usuario configuró en caso de que los sitios deseen proporcionar contenido multilingüe, presentamos una nueva forma para que los sitios indiquen contenido multilingüe, y el navegador se responsabilizará de negociar el idioma y mostrar el idioma preferido.
Otro motivo es que es posible que muchos sitios no usen los encabezados Accept-Language
para la negociación de idioma (por ejemplo, un estudio indica que solo el 7.2% de los 10,000 sitios principales usan Accept-Language
). El modo Incógnito de Chrome ya redujo el Accept-Language
a uno.
¿Qué significa esto para los desarrolladores web?
Los sitios que dependen de Accept-Language
para negociar el idioma deben prepararse para recibir Accept-Language
reducidos y considerar participar en la prueba de origen. Los valores Accept-Language
reducidos aparecerán en los siguientes lugares:
- El encabezado de la solicitud HTTP
Accept-Language
. - El método get de JavaScript
navigator.languages
.
El navegador se responsabilizará de la negociación de idioma para seleccionar el idioma preferido del usuario y enviarlo a los sitios. Para ello, los sitios deben agregar dos encabezados Variants
(un encabezado nuevo indica que los sitios admiten idiomas) Accept-Language
y Content-Language
en el encabezado de respuesta (consulta el ejemplo detallado a continuación).
Actualmente, los planes reducidos de Accept-Language
no incluyen iOS ni WebView, y esas plataformas seguirán recibiendo la lista completa de Accept-Language
de los usuarios.
La compatibilidad con estas plataformas se planea para una fecha posterior.
Prueba de origen para la reducción de Accept-Language
Una prueba de origen requiere que el sitio participante proporcione un token en su respuesta que le indique al navegador que habilite la prueba especificada. Sin embargo, esto
significa que, en la solicitud inicial del navegador al sitio, no tiene forma de saber
si el sitio participa en una prueba de origen. Esto significa que la solicitud inicial en una sesión no enviará el Accept-Language header
reducido.
Las solicitudes de subrecursos en esa página, tanto del mismo origen como de origen cruzado, recibirán el encabezado Accept-Language
reducido. Las navegaciones posteriores del mismo origen también recibirán el encabezado Accept-Language
reducido. Las navegaciones entre orígenes volverán a enviar el encabezado completo, mientras que las solicitudes entre orígenes dentro de la página (como las solicitudes de iframe de terceros) seguirán enviando el encabezado Accept-Language
reducido si la solicitud de marco de nivel superior tiene un token de prueba de origen válido.
Esto es similar a la prueba de origen de reducción de usuario-agente. Si deseas obtener más información sobre la implementación interna de Chromium, puedes leer más en Implementa el encabezado HTTP Reduce Accept-Language.
Participa en la prueba de origen de reducción de Accept-Language
Puedes obtener más orientación en Cómo comenzar a usar las pruebas de origen de Chrome, pero los pasos esenciales se muestran a continuación.
Paso 1
Para registrarte en la prueba de origen y obtener un token para tus dominios, visita la página Prueba de reducción de Accept-Language.
Paso 2
Actualiza los encabezados de respuesta HTTP:
- Agrega
Origin-Trial: <ORIGIN TRIAL TOKEN>
al encabezado de respuesta HTTP, en el que <ORIGIN TRIAL TOKEN
> contiene el token que obtuviste cuando te registraste para la prueba de origen. - Agrega
Content-Language
al encabezado de respuesta HTTP para indicar los idiomas destinados al público. - Agrega
Variants
a tu encabezado de respuesta HTTP para indicar los idiomas que admiten los sitios. - [Opcional] Agrega
Vary: Accept-Language
a tu respuesta HTTP para crear una clave de caché para la negociación de contenido. - Si configuras esos encabezados, solo se activará la negociación del idioma del navegador (un posible reinicio de la solicitud inicial) para el origen determinado. Para que los sitios muestren la representación de idioma correcta para los usuarios, también debes actualizar los sitios que envían el contenido según el encabezado Accept-Language del usuario (consulta el ejemplo a continuación).
Paso 3
Carga tu sitio web en Chrome M109 Beta (o una versión posterior) y comienza a recibir la cadena Accept-Language reducida.
Envía cualquier problema o comentario al repositorio de GitHub de Accept-Language Reduction.
Demostración
Para ver una demostración de un sitio multilingüe que habilitó la prueba de origen (junto con el código fuente), consulta https://reduce-accept-language.glitch.me/.
Para ver una demostración de la habilitación y la inhabilitación de la prueba de origen (junto con el código fuente), consulta https://reduce-accept-language-ot.glitch.me/.
Por ejemplo, example.com
admite ja
(japonés) y en
(inglés). Una solicitud puede ser lo siguiente:
GET / HTTP/1.1
Host: example.com
Accept-Language: en
El sitio sabe que el usuario prefiere el contenido en inglés según su aceptación de idioma. Los encabezados de respuesta pueden incluir lo siguiente:
HTTP/1.1 200 OK
Content-Language: en
Variants: Accept-Language=(en ja)
Origin-Token: a-valid-token
Si el usuario tiene preferencia por el contenido en japonés, la solicitud sería la siguiente:
GET / HTTP/1.1
Host: example.com
Accept-Language: ja
En este caso, el sitio responde con encabezados para contenido en japonés:
HTTP/1.1 200 OK
Content-Language: ja
Variants: Accept-Language=(en ja)
Origin-Token: a-valid-token
En el servidor, es posible que el sitio busque compatibilidad con idiomas específicos, pero que recurra a un idioma predeterminado si no se detecta compatibilidad:
if(accept_language == 'ja') {
res.response('ja_page')
}
else {
res.response('en_page')
}
En el ejemplo anterior, example.com
responde en
o ja
según el valor de Accept-Language
, y se establece de forma predeterminada en en
si no hay coincidencias. En este caso, el sitio también puede proporcionar redireccionamientos a las páginas de idioma correspondientes, ya sea /en
o /ja
, según el valor de Accept-Language
. Consulta ejemplos detallados relacionados con los redireccionamientos en el documento de implementación.
Compatibilidad con pruebas de origen de terceros
Por el momento, no admitimos el registro de tus dominios como un
tercero para la prueba.
Si administras un servicio que se implementa como subrecurso en todos los orígenes (como la publicación de anuncios o las estadísticas), solo recibirás el encabezado Accept-Language
reducido si el sitio de nivel superior participa en la prueba de origen.
Verifica que la prueba de origen funcione
La guía para solucionar problemas relacionados con las pruebas de origen de Chrome proporciona una lista de tareas completa para garantizar que tu token esté configurado correctamente.
Puedes configurar varios idiomas y su prioridad desde chrome://settings/languages
o Configuración → Idiomas. Considera seleccionar un idioma que tu sitio no admita y moverlo a la parte superior de la lista para asegurarte de que se active la renegociación adicional.
Los encabezados de la respuesta inicial que contienen el token de prueba de origen deberían verse de la siguiente manera:

Los encabezados de solicitud posteriores que contienen el encabezado Accept-Language reducido se ven de la siguiente manera:

Cómo dejar de participar en la prueba de origen
En cualquier momento durante la prueba, puedes dejar de participar y recibir la lista completa de Accept-Language del usuario. Para dejar de participar, sigue estos pasos:
- Quita el encabezado
Origin-Trial
de la prueba de reducción de Accept-Language de tu respuesta HTTP. - [Opcional] Quita el encabezado
Variants
que se agrega para habilitar la prueba de origen en tu respuesta HTTP si no te interesa enviar este encabezado. También puedes usarVariants
con un valor vacío para lograr esto. - [Opcional] Quita el encabezado
Content-Language
que se agrega para habilitar la prueba de origen en tu respuesta HTTP si no te interesa enviar este encabezado.
Duración de la prueba de origen
La prueba de origen de reducción de Accept-Language se ejecutará durante al menos seis meses, lo que corresponde a alrededor de seis eventos importantes de Chrome. La prueba de origen aparecerá en la M109 y finalizará con la M114 (es decir, la última versión de Chrome que tiene la prueba disponible). En ese momento, Chrome evaluará los comentarios de la prueba de origen antes de continuar con el envío de la cadena Accept-Language reducida de forma gradual: primero, reduce el encabezado HTTP Accept-Language y, luego, reduce la interfaz JS. Si un sitio necesita más tiempo para realizar pruebas, puede habilitar una prueba de origen de baja posterior, que le permitiría acceder a la cadena Accept-Language completa durante al menos otros seis meses. Publicaremos más detalles sobre la prueba de baja cuando esté lista.
Compartir comentarios
Envía cualquier problema o comentario al repositorio de GitHub de Accept-Language Reduction.