Pengurangan Accept-Language adalah upaya untuk mengurangi platform pelacakan sidik jari
pasif dengan mengurangi preferensi bahasa pengguna di header
Accept-Language
dan hanya mengirim bahasa yang paling disukai pengguna (hanya satu).
Mulai Chrome 109
Beta, kami akan membuka
uji coba origin
untuk Pengurangan Accept-Language yang memungkinkan situs memilih untuk menerima header
Accept-Language
yang dipersingkat. Hal 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 stabil, pastikan untuk ikut serta dan menguji sebelum tanggal rilis Chrome 109 (saat ini
dijadwalkan untuk 10 Januari 2023).
Lihat contoh header Accept-Language
sebelum dan sesudah pengurangan di bawah.
Accept-Language: en-GB,en;q=0.9,de;q=0.8,fr;q=0.7
Accept-Language: en-GB
Berikut adalah ringkasan uji coba origin dan hal yang akan Anda temukan. Anda dapat membagikan masukan tentang perubahan ini atau masalah apa pun yang Anda alami selama uji coba origin di repositori GitHub Pengurangan Bahasa Penerimaan.
Apa yang dimaksud dengan Accept-Language?
String Accept-Language dibagikan di setiap permintaan HTTP dan ditampilkan dalam JavaScript ke semua resource yang dimuat oleh browser. Saat ini, kolom ini berisi semua bahasa yang disukai pengguna.
Mengapa Accept-Language dikurangi?
Pengurangan Accept-Language adalah upaya untuk mengurangi platform pengambilan sidik jari pasif di Chrome.
Saat ini, header Accept-Language
dibagikan secara default di setiap permintaan HTTP dan ditampilkan dalam JavaScript ke semua resource yang dimuat oleh browser. File ini
berisi semua preferensi bahasa pengguna. Daripada browser mengirim
daftar lengkap bahasa yang telah dikonfigurasi pengguna jika situs ingin
menyediakan konten multibahasa, kami memperkenalkan cara baru bagi situs untuk menunjukkan
konten multibahasa dan browser akan bertanggung jawab untuk melakukan negosiasi
bahasa dan menampilkan bahasa pilihan.
Alasan lainnya adalah banyak situs mungkin tidak menggunakan header Accept-Language
untuk negosiasi bahasa sama sekali (misalnya, satu
studi menunjukkan hanya 7,2% dari
10.000 situs teratas yang menggunakan Accept-Language
). Mode Samaran Chrome telah mengurangi
Accept-Language
menjadi satu.
Apa artinya ini bagi developer web?
Situs yang mengandalkan Accept-Language
untuk melakukan negosiasi bahasa harus
bersiap menerima Accept-Language
yang dikurangi 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 yang akan dikirim ke situs. Untuk melakukannya, situs harus
menambahkan 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 daftar lengkap Accept-Language
pengguna.
Dukungan untuk platform ini direncanakan untuk diluncurkan di lain waktu.
Uji coba origin untuk Pengurangan Accept-Language
Uji coba origin mengharuskan situs yang berpartisipasi untuk memberikan token dalam
responsnya yang memberi tahu browser untuk mengaktifkan uji coba yang ditentukan. Namun, hal ini
berarti bahwa pada permintaan awal browser ke situs, browser tidak dapat mengetahui
apakah situs tersebut berpartisipasi dalam uji coba origin. Artinya, permintaan awal
dalam sesi tidak akan mengirim Accept-Language header
yang dikurangi.
Permintaan untuk sub-resource di halaman tersebut, baik dengan origin yang sama maupun lintas origin, akan menerima header Accept-Language
yang dikurangi. Navigasi dengan origin yang sama berikutnya
juga akan menerima header Accept-Language
yang dikurangi. Navigasi lintas origin
akan kembali mengirim header lengkap, sedangkan permintaan lintas origin dalam
halaman (seperti permintaan iframe pihak ketiga) akan tetap mengirim header Accept-Language
yang dipersingkat jika permintaan frame level atas memiliki token uji coba origin yang valid.
Hal ini mirip dengan uji coba origin pengurangan Agen Pengguna dan jika ingin mempelajari lebih lanjut penerapan Chromium internal, Anda dapat membaca selengkapnya di Menerapkan header HTTP Reduce Accept-Language.
Berpartisipasi dalam uji coba origin Pengurangan Bahasa yang Diterima
Anda dapat membaca panduan lebih lanjut di Memulai uji coba origin Chrome, tetapi langkah-langkah utamanya ditampilkan di bawah.
Langkah 1
Untuk mendaftar ke uji coba origin dan mendapatkan token untuk domain Anda, buka halaman Uji Coba untuk Pengurangan Accept-Language.
Langkah 2
Perbarui header respons HTTP Anda:
- Tambahkan
Origin-Trial: <ORIGIN TRIAL TOKEN>
ke header respons HTTP Anda, dengan <ORIGIN TRIAL TOKEN
> berisi token yang Anda dapatkan saat mendaftar ke uji coba origin. - Tambahkan
Content-Language
ke header respons HTTP untuk menunjukkan bahasa yang ditujukan untuk audiens. - Tambahkan
Variants
ke header respons HTTP untuk menunjukkan bahasa yang didukung situs. - [Opsional] Tambahkan
Vary: Accept-Language
ke respons HTTP untuk membuat kunci cache bagi negosiasi konten. - Menetapkan header tersebut hanya akan memicu negosiasi bahasa browser (kemungkinan mulai ulang untuk permintaan awal) untuk origin tertentu. Agar 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 menerima string Accept-Language yang dipersingkat.
Kirimkan masalah atau masukan apa pun ke repositori GitHub Accept-Language Reduction.
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 dalam uji coba origin (beserta kode sumber), lihat https://reduce-accept-language-ot.glitch.me/.
Misalnya, example.com
mendukung ja
(Jepang) dan en
(Inggris). Permintaan
dapat berupa:
GET / HTTP/1.1
Host: example.com
Accept-Language: en
Situs mengetahui bahwa pengguna lebih memilih konten dalam bahasa Inggris berdasarkan accept-language pengguna. 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 akan menjadi:
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 mungkin mencari dukungan bahasa tertentu, 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
, yang ditetapkan secara default ke en
jika tidak ada yang cocok. Dalam hal ini,
situs juga dapat memberikan pengalihan ke halaman bahasa yang sesuai, baik /en
maupun
/ja
berdasarkan nilai Accept-Language
. Lihat contoh mendetail terkait pengalihan 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 diterapkan sebagai sub-resource di seluruh origin
(seperti penayangan iklan atau analisis), Anda hanya akan menerima header Accept-Language
yang dipersingkat jika situs tingkat teratas berpartisipasi dalam uji coba
origin.
Memvalidasi bahwa uji coba origin berfungsi
Panduan untuk memecahkan masalah uji coba origin Chrome menyediakan checklist lengkap untuk memastikan token Anda dikonfigurasi dengan benar.
Anda dapat 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:

Header permintaan berikutnya yang berisi Accept-Language yang dikurangi akan terlihat seperti:

Berhenti berpartisipasi dalam uji coba asal
Kapan saja selama uji coba berlangsung, Anda dapat berhenti berpartisipasi dan menerima daftar lengkap Accept-Language pengguna. Untuk berhenti berpartisipasi:
- Hapus header
Origin-Trial
untuk uji coba Pengurangan Accept-Language dari respons HTTP Anda. - [Opsional] Hapus header
Variants
yang ditambahkan untuk ikut serta dalam uji coba origin dalam respons HTTP jika Anda tidak tertarik untuk mengirim header ini. Anda juga dapat menggunakanVariants
dengan nilai kosong untuk melakukannya. - [Opsional] Hapus header
Content-Language
yang ditambahkan untuk memilih ikut uji coba origin dalam respons HTTP jika Anda tidak tertarik untuk mengirim header ini.
Durasi uji coba origin
Uji coba origin Pengurangan Accept-Language akan berjalan setidaknya selama enam bulan, yang sesuai dengan sekitar enam versi Chrome. Uji coba origin akan muncul di M109 dan berakhir dengan M114 (artinya rilis Chrome terakhir yang menyediakan uji coba tersebut). Pada saat itu, Chrome akan mengevaluasi masukan dari uji coba asal sebelum melanjutkan pengiriman string Accept-Language yang dikurangi secara bertahap: pertama-tama kurangi header HTTP Accept-Language, lalu kurangi antarmuka JS. Jika situs memerlukan lebih banyak waktu untuk melakukan pengujian, situs tersebut dapat memilih untuk mengikuti uji coba asal penghentian penggunaan berikutnya, yang akan memungkinkan situs tersebut mengakses string Accept-Language lengkap selama minimal enam bulan lagi. Kami akan memublikasikan detail selengkapnya tentang uji coba penghentian penggunaan saat sudah siap.
Berikan masukan
Kirimkan masalah atau masukan apa pun ke repositori GitHub Accept-Language Reduction.