Perubahan string Agen Pengguna, strategi yang diambil Chrome dan Firefox untuk mengurangi dampaknya, dan bagaimana Anda dapat membantu.
Chrome dan Firefox akan mencapai versi 100 dalam beberapa bulan. Hal ini berpotensi menyebabkan kerusakan pada situs yang mengandalkan identifikasi versi browser untuk menjalankan logika bisnis. Postingan ini membahas linimasa peristiwa, serta strategi yang digunakan Chrome dan Firefox memitigasi dampaknya, dan bagaimana Anda dapat membantu.
String Agen Pengguna
Agen Pengguna (UA) adalah string yang dikirim browser dalam header HTTP sehingga server dapat
mengidentifikasi browser. String ini juga dapat diakses melalui JavaScript dengan
navigator.userAgent
Formatnya biasanya sebagai berikut:
<browser_name>/<major_version>.<minor_version>
Misalnya, versi rilis browser terbaru pada saat publikasi postingan ini adalah:
- Chrome:
Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.54 Safari/537.36
- Firefox:
Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:96.0) Gecko/20100101 Firefox/96.0
- Safari:
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/15.2 Safari/605.1.15
Versi utama 100—nomor versi tiga digit
Versi utama 100 adalah tonggak pencapaian besar bagi Chrome dan Firefox. Model ini juga memiliki potensi yang menyebabkan kerusakan pada situs web saat kita beralih dari kode nomor versi tiga digit. Pengembang web menggunakan segala jenis teknik untuk mengurai string ini, dari kode kustom hingga menggunakan library penguraian Agen Pengguna, yang kemudian dapat digunakan untuk menentukan logika pemrosesan yang sesuai. Tujuan Agen Pengguna dan mekanisme pelaporan versi lainnya akan segera melaporkan yang terdiri dari tiga digit nomor versi.
Linimasa versi 100
Browser versi 100 akan dirilis pertama kali dalam versi eksperimental (Chrome Canary, Firefox Nightly), lalu versi beta, dan terakhir di versi stabil saluran TV Anda.
Browser | Linimasa |
---|---|
Chrome (rilis jadwal) | 29 Maret 2022 |
Firefox (rilis jadwal) | 3 Mei 2022 |
Mengapa nomor versi yang terdiri dari tiga digit dapat bermasalah?
Ketika {i>browser<i} pertama kali mencapai versi 10 lebih dari 12 tahun yang lalu, banyak masalah ditemukan dengan library penguraian Agen Pengguna karena nomor versi utama berubah dari satu digit menjadi dua.
Tanpa spesifikasi tunggal yang harus diikuti, browser yang berbeda memiliki format yang berbeda untuk string Agen Pengguna, dan penguraian Agen Pengguna spesifik per situs. Penting beberapa {i>parsing library<i} mungkin memiliki asumsi atau {i>bug<i} yang di {i>hard-code<i} yang tidak memperhitungkan tiga digit nomor versi utama. Banyak library memperbaiki logika penguraian saat {i>browser<i} pindah ke nomor versi dua digit, jadi mencapai {i>milestone<i} tiga digit diperkirakan akan menyebabkan lebih sedikit masalah. Mike Taylor, seorang insinyur di tim Chrome, telah melakukan survei tentang penguraian UA umum perpustakaan yang tidak menemukan masalah apa pun. Menjalankan eksperimen Chrome di telah memunculkan beberapa masalah, yang sedang dikerjakan.
Apa yang dilakukan browser?
Baik Firefox dan Chrome telah menjalankan eksperimen di mana versi terkini dari laporan browser berada di versi utama 100 untuk mendeteksi kemungkinan kerusakan situs web. Hal ini telah menyebabkan beberapa masalah yang dilaporkan, sebagian di antaranya sudah diperbaiki. Eksperimen ini akan terus berjalan hingga rilis versi 100.
Ada juga strategi mitigasi cadangan yang diterapkan, jika versi 100 ke saluran stabil akan menyebabkan kerusakan yang lebih besar pada situs web dari yang diperkirakan.
Mitigasi Chrome
Di Chrome, rencana cadangannya adalah menggunakan flag untuk membekukan versi utama di versi 99 dan melaporkan nomor versi utama yang sebenarnya di bagian versi minor dari String Agen Pengguna (kode sudah mendarat).
Versi Chrome seperti yang dilaporkan dalam string Agen Pengguna mengikuti pola
<major_version>.<minor_version>.<build_number>.<patch_number>
.
Jika rencana cadangan diterapkan, string Agen Pengguna akan terlihat seperti ini:
99.101.4988.0
Chrome juga menjalankan eksperimen untuk memastikan bahwa pelaporan nilai tiga digit di bagian versi minor dari string tidak mengakibatkan kerusakan, karena versi minor di string Agen Pengguna Chrome telah melaporkan 0 untuk waktu yang sangat lama baik. Tim Chrome akan memutuskan apakah akan menggunakan opsi cadangan berdasarkan jumlah dan tingkat keparahan masalah yang dilaporkan.
Mitigasi Firefox
Di Firefox, strateginya akan bergantung pada seberapa penting kerusakan yang terjadi. Firefox
memiliki
mekanisme intervensi situs.
Tim webcompat Mozilla dapat memperbaiki situs yang rusak di Firefox menggunakan
mekanisme atensi. Jika Anda mengetik about:compat
di bilah URL Firefox, Anda dapat melihat apa
saat ini sedang diperbaiki. Jika situs rusak dengan versi utama 100 pada
domain tertentu, Anda dapat memperbaikinya
dengan mengirimkan versi 99.
Jika kerusakannya meluas, versi utama dapat dibekukan angka Kemudian ada berbagai kemungkinan strategi, masing-masing dengan kelebihan dan kekurangannya. Mozilla dapat mengirimkan nomor versi yang sebenarnya sebagai versi minor nomor, membekukan string sepenuhnya apa adanya, atau mengirim nomor versi yang sebenarnya melalui parameter lain.
Setiap strategi yang menambah kompleksitas pada string Agen Pengguna memiliki berdampak pada ekosistem. Mari bekerja sama untuk menghindari masalah aneh lainnya perilaku model.
Apa yang dapat Anda lakukan untuk membantu?
Di Chrome dan Firefox Nightly, Anda dapat mengonfigurasi browser untuk melaporkan versi 100 sekarang dan melaporkan semua masalah yang Anda temui.
Konfigurasi Chrome untuk melaporkan versi utama sebagai 100
- Buka
chrome://flags/#force-major-version-to-100
. - Tetapkan opsi ke
Enabled
.
Konfigurasi Firefox Nightly untuk melaporkan versi utama sebagai 100
- Buka menu Settings di Firefox Nightly.
- Telusuri "Firefox 100" lalu centang kotak "Firefox 100 User-Agent {i>String<i}” sebelumnya.
Menguji dan mengajukan laporan
- Jika Anda adalah pengelola situs, uji situs Anda dengan Chrome dan Firefox 100. Meninjau kode dan library penguraian Agen Pengguna Anda, dan memastikan mereka mampu menangani nomor versi tiga digit. Kita memiliki menghimpun beberapa pola yang sedang rusak.
- Jika Anda mengembangkan library penguraian Agen Pengguna, tambahkan pengujian untuk mengurai versi lebih besar dari dan sama dengan 100. Pengujian awal kami menunjukkan bahwa versi {i>library<i} dapat menanganinya dengan benar. Namun, web memiliki warisan yang panjang, jadi jika Anda memiliki versi lama perpustakaan penguraian, itu waktu untuk memeriksa masalah dan akhirnya melakukan upgrade.
- Jika Anda menjelajahi web dan menemukan apa pun masalah terkait versi 100, kirimkan laporan di webcompat.com.