Berpartisipasi dalam uji coba origin untuk Pengurangan Bahasa Terima

Pengurangan Bahasa Terima adalah upaya untuk mengurangi pelacakan sidik jari pasif platform dengan mengurangi preferensi bahasa pengguna di Accept-Language dan hanya mengirimkan bahasa pilihan pengguna (hanya satu).

Diawali dengan Chrome 109 Beta, kami akan membuka uji coba origin untuk Pengurangan Bahasa Terima yang memungkinkan situs ikut serta untuk menerima Header Accept-Language. Tindakan ini akan memungkinkan situs menemukan dan memperbaiki masalah sebelum Accept-Language yang dikurangi menjadi perilaku default di Chrome dalam rilis mendatang. Untuk menguji fitur sebelum diluncurkan ke populasi yang stabil, pastikan untuk ikut serta dan menguji sebelum tanggal rilis Chrome 109 (saat ini dijadwalkan pada 10 Januari 2023).

Lihat contoh header Accept-Language sebelum dan sesudah pengurangan di bawah ini.

Saat ini
Accept-Language: en-GB,en;q=0.9,de;q=0.8,fr;q=0.7
Diajukan
Accept-Language: en-GB

Berikut adalah ringkasan uji coba origin dan proses selanjutnya. Anda dapat membagikan masukan tentang perubahan ini atau masalah apa pun yang Anda temui selama uji coba origin di GitHub Menerima-Bahasa Pengurangan repositori Anda.

Apa itu Accept-Language?

Tujuan Bahasa Terima string dibagikan di setiap permintaan HTTP dan diekspos di JavaScript ke semua resource yang dimuat oleh browser. Saat ini, antarmuka pengguna berisi semua pilihan bahasa.

Mengapa Accept-Language dikurangi?

Pengurangan Bahasa Terima adalah upaya untuk mengurangi pelacakan sidik jari pasif platform ini di Chrome.

Saat ini, header Accept-Language dibagikan secara default di setiap HTTP dan diekspos dalam JavaScript ke semua resource yang dimuat oleh browser. Ini berisi semua preferensi bahasa pengguna. Bukannya browser mengirim daftar lengkap bahasa yang telah dikonfigurasi pengguna jika situs ingin menyediakan konten multibahasa, kami memperkenalkan cara baru bagi situs untuk mengindikasikan konten multibahasa dan browser akan bertanggung jawab untuk negosiasi dan menampilkan bahasa yang dipilih.

Alasan lainnya adalah ada banyak situs yang mungkin tidak menggunakan header Accept-Language untuk negosiasi bahasa sama sekali (misalnya, satu menunjukkan hanya 7,2% dari total 10.000 situs teratas menggunakan Accept-Language). Mode Samaran Chrome telah mengurangi Accept-Language ke satu.

Apa pengaruhnya bagi developer web?

Situs yang mengandalkan Accept-Language untuk melakukan negosiasi bahasa harus bersiaplah untuk menerima pengurangan Accept-Language dan mempertimbangkan untuk berpartisipasi dalam uji coba origin. Nilai Accept-Language yang dikurangi akan muncul di:

  • Header permintaan HTTP Accept-Language.
  • Pengambil JavaScript navigator.languages.

Browser akan bertanggung jawab atas negosiasi bahasa untuk memilih bahasa pilihan pengguna untuk dikirim ke situs. Untuk melakukannya, situs harus tambahkan dua header Variants (header baru menunjukkan situs yang mendukung bahasa) Accept-Language dan Content-Language di header respons (lihat contoh mendetail di bawah).

Paket Accept-Language yang dikurangi saat ini tidak mencakup iOS dan WebView, dan platform tersebut akan terus mendapatkan pengguna daftar lengkap Accept-Language. Dukungan untuk platform ini direncanakan di kemudian hari.

Uji coba origin untuk Pengurangan Bahasa Terima

Uji coba origin mengharuskan situs yang berpartisipasi untuk memberikan token di yang memberi tahu browser untuk mengaktifkan uji coba yang ditentukan. Namun, berarti bahwa pada permintaan awal browser ke situs, ia tidak memiliki cara untuk mengetahui jika situs berpartisipasi dalam uji coba origin. Ini berarti bahwa awal permintaan dalam suatu sesi tidak akan mengirimkan Accept-Language header yang dikurangi. Permintaan untuk subresource di halaman tersebut, baik dari origin yang sama maupun lintas origin, akan menerima header Accept-Language yang dikurangi. Navigasi dari origin yang sama berikutnya juga akan menerima header Accept-Language yang dikurangi. Navigasi lintas asal akan kembali ke pengiriman header lengkap, sedangkan permintaan lintas origin dalam (seperti permintaan iframe pihak ketiga) tetap akan mengirimkan Accept-Language yang dikurangi jika permintaan frame level teratas memiliki token uji coba origin yang valid.

Ini mirip dengan uji coba origin pengurangan Agen Pengguna dan jika Anda ingin untuk mempelajari lebih lanjut implementasi Chromium internal, Anda dapat membaca selengkapnya di Mengimplementasikan header HTTP Kurangi Bahasa Terima.

Berpartisipasi dalam uji coba origin Accept-Language Reduction

Anda dapat membaca panduan lebih lanjut di Mulai menggunakan uji coba origin Chrome, tetapi langkah-langkah pentingnya ditunjukkan di bawah ini.

Langkah 1

Untuk mendaftar uji coba origin dan mendapatkan token untuk domain Anda, kunjungi Uji Coba untuk Pengurangan Bahasa Terima kami.

Langkah 2

Update header respons HTTP Anda:

  1. Tambahkan Origin-Trial: <ORIGIN TRIAL TOKEN> ke respons HTTP Anda header, dengan <ORIGIN TRIAL TOKEN> berisi token yang Anda dapatkan saat mendaftar ke uji coba origin.
  2. Tambahkan Content-Language ke header respons HTTP Anda untuk menunjukkan bahasa yang ditujukan untuk audiens.
  3. Tambahkan Variants ke header respons HTTP Anda untuk menunjukkan situs bahasa yang didukung.
  4. [Opsional] Tambahkan Vary: Accept-Language ke respons HTTP Anda untuk membuat kunci cache untuk negosiasi konten.
  5. Menyetel header tersebut hanya akan memicu bahasa browser negosiasi (kemungkinan dimulai ulang untuk permintaan awal) untuk tempat asal. Untuk membuat situs menampilkan representasi bahasa yang benar untuk pengguna, Anda juga perlu memperbarui situs yang mengirim konten berdasarkan header Accept-Language pengguna (lihat contoh di bawah).

Langkah 3

Muat situs Anda di Chrome M109 Beta (atau yang lebih baru) dan mulai terima mengurangi string Accept-Language.

Kirim masalah atau masukan ke GitHub Accept-Language repositori Anda.

Demo

Untuk demonstrasi situs multibahasa yang ikut serta dalam uji coba origin (beserta kode sumbernya) lihat https://reduce-accept-language.glitch.me/.

Untuk demonstrasi keikutsertaan dan ketidakikutsertaan uji coba origin (bersama dengan ) lihat https://reduce-accept-language-ot.glitch.me/.

Misalnya, example.com mendukung ja (Jepang) dan en (Inggris). J permintaan dapat berupa:

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

Situs mengetahui bahwa pengguna lebih menyukai konten dalam bahasa Inggris berdasarkan terima-bahasa. Header respons dapat mencakup:

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

Jika pengguna memiliki preferensi untuk konten berbahasa Jepang, permintaannya adalah:

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

Dalam hal ini, situs merespons dengan header untuk konten berbahasa Jepang:

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

Di sisi server, situs itu mungkin mencari dukungan bahasa khusus tetapi kembali ke default jika tidak ada dukungan yang terdeteksi:

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

Pada contoh di atas, example.com merespons en atau ja berdasarkan Nilai Accept-Language, default-nya ke en jika tidak ada yang cocok. Dalam hal ini, situs ini juga dapat memberikan pengalihan ke halaman bahasa yang sesuai baik /en maupun /ja berdasarkan nilai Accept-Language. Lihat contoh terperinci terkait mengalihkan di dokumen penerapan.

Dukungan uji coba origin pihak ketiga

Saat ini kami tidak mendukung pendaftaran domain Anda sebagai pihak ketiga untuk uji coba. Jika Anda mengoperasikan layanan yang diimplementasikan sebagai subresource di seluruh origin (seperti penayangan iklan atau analisis), Anda hanya akan menerima nilai Accept-Language jika situs tingkat atas berpartisipasi dalam origin Cloud.

Memvalidasi bahwa uji coba origin berfungsi

Panduan untuk memecahkan masalah uji coba origin Chrome menyediakan daftar periksa lengkap untuk memastikan token Anda dikonfigurasi dengan benar.

Anda mengonfigurasi beberapa bahasa dan prioritasnya dari chrome://settings/languages atau Setelan → Bahasa. Pertimbangkan untuk memilih bahasa yang tidak didukung situs Anda dan memindahkannya ke bagian atas daftar untuk memastikan bahwa negosiasi ulang tambahan dipicu.

Header respons awal yang berisi token uji coba origin akan terlihat seperti:

Screenshot header permintaan dengan kurangi Accept-Language.

Header permintaan berikutnya yang berisi pengurangan tampilan Accept-Language seperti ini:

Header respons awal yang berisi token uji coba origin.

Berhenti berpartisipasi dalam uji coba origin

Selama uji coba berlangsung, Anda dapat berhenti berpartisipasi dan menerima daftar lengkap {i>Accept-Language <i} pengguna. Untuk berhenti berpartisipasi:

  1. Menghapus header Origin-Trial untuk Accept-Language Reduction uji coba dari respons HTTP Anda.
  2. [Opsional] Hapus header Variants yang ditambahkan untuk ikut serta uji coba origin dalam respons HTTP Anda jika Anda tidak tertarik untuk mengirimkannya {i>header<i} ini. Anda juga dapat menggunakan Variants dengan nilai kosong untuk menyelesaikan ini.
  3. [Opsional] Hapus header Content-Language yang ditambahkan ke ikut serta dalam uji coba origin di respons HTTP Anda jika Anda tidak tertarik mengirimkan {i>header<i} ini.

Durasi uji coba origin

Uji coba origin Accept-Language akan berjalan setidaknya selama enam bulan, yang sama dengan sekitar enam tonggak pencapaian Chrome. Uji coba origin akan muncul di M109 dan diakhiri dengan M114 (artinya rilis Chrome terakhir yang memiliki uji coba yang tersedia). Pada tahap ini, Chrome akan mengevaluasi masukan dari origin sebelum melanjutkan dengan mengirim pengurangan string Accept-Language dalam secara bertahap: pertama, kurangi header HTTP Accept-Language Antarmuka JSM. Jika memerlukan lebih banyak waktu untuk pengujian, situs dapat ikut serta dalam pengujian berikutnya uji coba origin penghentian penggunaan, yang akan memungkinkan mereka mengakses String terima Bahasa selama setidaknya enam bulan berikutnya. Kami akan memublikasikan lebih banyak detail tentang uji coba penghentian saat versi tersebut sudah siap.

Berikan masukan

Kirim masalah atau masukan ke GitHub Accept-Language repositori Anda.