Partecipare alla prova dell'origine per la riduzione della lingua Accetta

La riduzione di Accept-Language è un tentativo di ridurre le superfici di fingerprinting passivo riducendo le preferenze linguistiche dell'utente nell'header Accept-Language e inviando solo la lingua più preferita dall'utente (una sola).

A partire dalla versione beta di Chrome 109, apriremo la sperimentazione sull'origine per la riduzione di Accept-Language, consentendo ai siti di attivare la ricezione dell'intestazione Accept-Language ridotta. In questo modo i siti potranno scoprire e risolvere i problemi prima che la riduzione di Accept-Language diventi il comportamento predefinito in Chrome in una release futura. Per testare la funzionalità prima del lancio per la popolazione stabile, assicurati di attivarla e di eseguire il test prima della data di rilascio di Chrome 109 (attualmente prevista per il 10 gennaio 2023).

Di seguito sono riportati alcuni esempi di intestazioni Accept-Language prima e dopo la riduzione.

Attuale
Accept-Language: en-GB,en;q=0.9,de;q=0.8,fr;q=0.7
Proposto
Accept-Language: en-GB

Di seguito è riportata una panoramica della prova dell'origine e cosa aspettarsi. Puoi condividere il tuo feedback su questa modifica o eventuali problemi riscontrati durante la prova dell'origine nel repository GitHub per la riduzione della lingua accettata.

Che cos'è Accept-Language?

La stringa Accept-Language viene condivisa in ogni richiesta HTTP ed esposta in JavaScript a tutte le risorse caricate dal browser. Al momento, contiene tutte le lingue preferite dall'utente.

Perché Accept-Language viene ridotto?

La riduzione di Accept-Language è un tentativo di ridurre le superfici di fingerprinting passivo in Chrome.

Al momento, l'intestazione Accept-Language viene condivisa per impostazione predefinita in ogni richiesta HTTP e esposta in JavaScript a tutte le risorse caricate dal browser. Contiene tutte le preferenze di lingua dell'utente. Anziché inviare il browser l'elenco completo delle lingue configurate dall'utente nel caso in cui i siti vogliano fornire contenuti multilingue, stiamo introducendo un nuovo modo per i siti di indicare contenuti multilingue e il browser si assumerà la responsabilità di eseguire la mediazione linguistica e di visualizzare la lingua preferita.

Un altro motivo è che molti siti potrebbero non utilizzare affatto gli intestazioni Accept-Language per la negoziazione della lingua (ad esempio, uno studio indica che solo il 7,2% dei 10.000 siti principali utilizza Accept-Language). La modalità di navigazione in incognito di Chrome ha già ridotto il numero di Accept-Language a uno.

Che cosa significa per gli sviluppatori web?

I siti che si basano su Accept-Language per la negoziazione della lingua devono prepararsi a ricevere meno Accept-Language e prendere in considerazione la partecipazione al prova dell'origine. I valori Accept-Language ridotti verranno visualizzati in:

  • L'intestazione della richiesta HTTP Accept-Language.
  • Il getter JavaScript navigator.languages.

Il browser si assume la responsabilità della negoziazione della lingua per selezionare la lingua preferita dell'utente da inviare ai siti. Per farlo, i siti devono aggiungere due intestazioni Variants (una nuova intestazione indica i siti che supportano le lingue) Accept-Language e Content-Language nell'intestazione di risposta (vedi l'esempio dettagliato di seguito).

I piani Accept-Language ridotti attualmente non includono iOS e WebView e queste piattaforme continueranno a ricevere l'elenco completo di Accept-Language degli utenti. Il supporto di queste piattaforme è previsto per una data successiva.

Prova dell'origine per la riduzione di Accept-Language

Un'esperienza di prova dell'origine richiede che il sito partecipante fornisca un token nella risposta che indichi al browser di attivare la prova specificata. Tuttavia, questo significa che nella richiesta iniziale del browser al sito non è possibile sapere se il sito partecipa a una prova dell'origine. Ciò significa che la richiesta iniziale in una sessione non invierà il Accept-Language header ridotto. Le richieste di risorse secondarie in quella pagina, sia con origine uguale che diversa, riceveranno l'intestazione Accept-Language ridotta. Anche le navigazioni successive della stessa origine riceveranno l'intestazione Accept-Language ridotta. Le navigazioni cross-origin riprenderanno a inviare l'intestazione completa, mentre le richieste cross-origin all'interno della pagina (ad esempio le richieste di iframe di terze parti) continueranno a inviare l'intestazione Accept-Language ridotta se la richiesta del frame di primo livello ha un token di prova dell'origine valido.

Questa funzionalità è simile alla prova dell'origine della riduzione dello user agent. Per saperne di più sull'implementazione interna di Chromium, consulta Implementazione dell'intestazione HTTP Reduce Accept-Language.

Partecipare alla prova dell'origine di riduzione dell'attributo Accept-Language

Puoi leggere ulteriori indicazioni in Iniziare a utilizzare le prove dell'origine di Chrome, ma i passaggi essenziali sono riportati di seguito.

Passaggio 1

Per registrarti alla prova dell'origine e ricevere un token per i tuoi domini, visita la pagina Prova per la riduzione di Accept-Language.

Passaggio 2

Aggiorna le intestazioni di risposta HTTP:

  1. Aggiungi Origin-Trial: <ORIGIN TRIAL TOKEN> all'intestazione della risposta HTTP, dove <ORIGIN TRIAL TOKEN> contiene il token che hai ricevuto durante la registrazione alla prova dell'origine.
  2. Aggiungi Content-Language all'intestazione della risposta HTTP per indicare le lingue destinate al pubblico.
  3. Aggiungi Variants all'intestazione della risposta HTTP per indicare le lingue supportate dai siti.
  4. [Facoltativo] Aggiungi Vary: Accept-Language alla risposta HTTP per creare una chiave della cache per la negoziazione dei contenuti.
  5. L'impostazione di queste intestazioni attiverà solo la negoziazione della lingua del browser (un potenziale riavvio per la richiesta iniziale) per l'origine specificata. Per fare in modo che i siti mostrino la rappresentazione corretta della lingua per gli utenti, devi anche aggiornare i siti che inviano i contenuti in base all'intestazione Accept-Language dell'utente (vedi l'esempio di seguito).

Passaggio 3

Carica il tuo sito web in Chrome M109 beta (o versioni successive) e inizia a ricevere la stringa Accept-Language ridotta.

Invia eventuali problemi o feedback al repository GitHub di riduzione di Accept-Language.

Demo

Per una dimostrazione di un sito multilingue che ha attivato la prova dell'origine (insieme al codice sorgente), visita la pagina https://reduce-accept-language.glitch.me/.

Per una dimostrazione dell'attivazione e della disattivazione della prova dell'origine (oltre al codice sorgente), visita la pagina https://reduce-accept-language-ot.glitch.me/.

Ad esempio, example.com supporta ja (giapponese) e en (inglese). Una richiesta può essere:

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

Il sito sa che l'utente preferisce i contenuti in inglese in base al valore accept-language. Le intestazioni di risposta possono includere:

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

Se l'utente ha una preferenza per i contenuti in lingua giapponese, la richiesta sarà:

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

In questo caso, il sito risponde con intestazioni per i contenuti in giapponese:

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

Lato server, il sito potrebbe cercare il supporto di una lingua specifica, ma se non ne viene rilevato nessuno, potrebbe ricorrere a una predefinita:

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

Nell'esempio precedente, example.com risponde en o ja in base al valore Accept-Language, assumendo per impostazione predefinita en se non c'è corrispondenza. In questo caso, il sito può anche fornire reindirizzamenti alle pagine in lingua corrispondente /en o /ja in base al valore Accept-Language. Consulta esempi dettagliati relativi ai reindirizzamenti nella documentazione sull'implementazione.

Assistenza per la prova delle origini di terze parti

Al momento non supportiamo la registrazione dei tuoi domini come terza parte per la prova. Se gestisci un servizio implementato come risorsa secondaria in più origini (ad esempio la pubblicazione di annunci o l'analisi), riceverai l'intestazione Accept-Language ridotta solo se il sito di primo livello partecipa alla prova dell'origine.

Verificare il funzionamento della prova dell'origine

La guida alla risoluzione dei problemi relativi alle prove dell'origine di Chrome fornisce un elenco di controllo completo per assicurarti che il token sia configurato correttamente.

Puoi configurare più lingue e la relativa priorità dachrome://settings/languages o Impostazioni → Lingue. Valuta la possibilità di selezionare una lingua non supportata dal tuo sito e di spostarla in cima all'elenco per assicurarti che venga attivata la nuova negoziazione.

Le intestazioni della risposta iniziale contenenti il token di prova dell'origine dovrebbero essere simili alle seguenti:

Uno screenshot dell&#39;intestazione della richiesta con la riduzione di Accept-Language.

Le intestazioni di richiesta successive contenenti la lingua accettata ridotta hanno il seguente aspetto:

Le intestazioni della risposta iniziale contenenti il token di prova dell&#39;origine.

Interrompere la partecipazione alla prova dell'origine

In qualsiasi momento durante la prova, puoi interrompere la partecipazione e ricevere l'elenco completo di Accept-Language dell'utente. Per interrompere la partecipazione:

  1. Rimuovi l'intestazione Origin-Trial per il prova di riduzione di Accept-Language dalla risposta HTTP.
  2. [Facoltativo] Rimuovi l'intestazione Variants aggiunta per attivare la sperimentazione sull'origine nella risposta HTTP se non ti interessa inviare questa intestazione. Puoi anche utilizzare Variants con un valore vuoto per ottenere questo risultato.
  3. [Facoltativo] Rimuovi l'intestazione Content-Language aggiunta per attivare la sperimentazione sull'origine nella risposta HTTP se non ti interessa inviare questa intestazione.

Durata della prova dell'origine

La prova dell'origine di riduzione di Accept-Language durerà almeno sei mesi, che corrispondono a circa sei traguardi di Chrome. La prova dell'origine verrà visualizzata in M109 e terminerà con M114 (ovvero l'ultima versione di Chrome per cui è disponibile la prova). A quel punto, Chrome valuterà il feedback della prova dell'origine prima di procedere con l'invio della stringa Accept-Language ridotta in modo graduale: prima riduci l'intestazione HTTP Accept-Language e poi l'interfaccia JS. Se un sito ha bisogno di più tempo per eseguire il test, può attivare una successiva prova dell'origine del ritiro, che gli consentirà di accedere alla stringa completa Accept-Language per almeno altri sei mesi. Pubblicheremo maggiori dettagli sulla prova del ritiro quando sarà pronta.

Condividi feedback

Invia eventuali problemi o feedback al repository GitHub di riduzione di Accept-Language.