Participa en la prueba de origen para la reducción de Accept-Language

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.

Actual
Accept-Language: en-GB,en;q=0.9,de;q=0.8,fr;q=0.7
Propuesta
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:

  1. 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.
  2. Agrega Content-Language al encabezado de respuesta HTTP para indicar los idiomas destinados al público.
  3. Agrega Variants a tu encabezado de respuesta HTTP para indicar los idiomas que admiten los sitios.
  4. [Opcional] Agrega Vary: Accept-Language a tu respuesta HTTP para crear una clave de caché para la negociación de contenido.
  5. 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:

Una captura de pantalla del encabezado de solicitud con el parámetro Accept-Language reducido

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

Los encabezados de la respuesta inicial que contienen el token de prueba de origen

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:

  1. Quita el encabezado Origin-Trial de la prueba de reducción de Accept-Language de tu respuesta HTTP.
  2. [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 usar Variants con un valor vacío para lograr esto.
  3. [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.