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.
Accept-Language: en-GB,en;q=0.9,de;q=0.8,fr;q=0.7
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:
- 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. - Aggiungi
Content-Language
all'intestazione della risposta HTTP per indicare le lingue destinate al pubblico. - Aggiungi
Variants
all'intestazione della risposta HTTP per indicare le lingue supportate dai siti. - [Facoltativo] Aggiungi
Vary: Accept-Language
alla risposta HTTP per creare una chiave della cache per la negoziazione dei contenuti. - 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:

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

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:
- Rimuovi l'intestazione
Origin-Trial
per il prova di riduzione di Accept-Language dalla risposta HTTP. - [Facoltativo] Rimuovi l'intestazione
Variants
aggiunta per attivare la sperimentazione sull'origine nella risposta HTTP se non ti interessa inviare questa intestazione. Puoi anche utilizzareVariants
con un valore vuoto per ottenere questo risultato. - [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.