Những thay đổi về chuỗi User-Agent, các chiến lược mà Chrome và Firefox đang thực hiện để giảm thiểu tác động và cách bạn có thể giúp đỡ.
Chrome và Firefox sẽ đạt phiên bản 100 trong vài tháng tới. Điều này có thể gây ra sự cố trên các trang web dựa vào việc xác định phiên bản trình duyệt để thực hiện logic kinh doanh. Bài đăng này trình bày tiến trình của các sự kiện, chiến lược mà Chrome và Firefox đang thực hiện để giảm thiểu tác động cũng như cách bạn có thể giúp đỡ.
Chuỗi tác nhân người dùng
User-Agent (UA) là một chuỗi mà trình duyệt gửi trong tiêu đề HTTP để máy chủ có thể nhận dạng trình duyệt. Bạn cũng có thể truy cập vào chuỗi này thông qua JavaScript bằng navigator.userAgent
.
Tệp này thường có định dạng như sau:
<browser_name>/<major_version>.<minor_version>
Ví dụ: các phiên bản phát hành mới nhất của trình duyệt tại thời điểm phát hành bài đăng này là:
- 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
Phiên bản chính 100 – số phiên bản gồm ba chữ số
Phiên bản chính 100 là một mốc quan trọng đối với cả Chrome và Firefox. Điều này cũng có thể gây ra sự cố trên các trang web khi chúng ta chuyển từ số phiên bản gồm hai chữ số sang số phiên bản gồm ba chữ số. Nhà phát triển web sử dụng mọi loại kỹ thuật để phân tích cú pháp các chuỗi này, từ mã tuỳ chỉnh đến việc sử dụng thư viện phân tích cú pháp User-Agent, sau đó có thể dùng để xác định logic xử lý tương ứng. Agent-User và mọi cơ chế báo cáo phiên bản khác sẽ sớm báo cáo số phiên bản gồm ba chữ số.
Tiến trình phát triển của phiên bản 100
Trước tiên, trình duyệt phiên bản 100 sẽ được phát hành trong các phiên bản thử nghiệm (Chrome Canary, Firefox Nightly), sau đó là các phiên bản beta và cuối cùng là trên kênh ổn định.
Trình duyệt | Dòng thời gian |
---|---|
Chrome (lịch phát hành) | Ngày 29 tháng 3 năm 2022 |
Firefox (lịch phát hành) | Ngày 3 tháng 5 năm 2022 |
Tại sao số phiên bản gồm ba chữ số có thể gây ra vấn đề?
Khi trình duyệt đạt phiên bản 10 lần đầu tiên cách đây hơn 12 năm, nhiều vấn đề đã được phát hiện với các thư viện phân tích cú pháp User-Agent khi số phiên bản chính chuyển từ một chữ số sang hai chữ số.
Nếu không có một quy cách nào để tuân theo, thì các trình duyệt sẽ có định dạng khác nhau cho chuỗi User-Agent và cách phân tích cú pháp User-Agent dành riêng cho trang web. Một số thư viện phân tích cú pháp có thể có các giả định hoặc lỗi được mã hoá cứng không tính đến số phiên bản chính gồm ba chữ số. Nhiều thư viện đã cải thiện logic phân tích cú pháp khi trình duyệt chuyển sang số phiên bản hai chữ số, vì vậy, việc đạt được mốc ba chữ số dự kiến sẽ gây ra ít vấn đề hơn. Mike Taylor, một kỹ sư trong nhóm Chrome, đã thực hiện một cuộc khảo sát về các thư viện phân tích cú pháp UA phổ biến và không phát hiện thấy vấn đề nào. Việc chạy các thử nghiệm Chrome trong trường thực tế đã phát hiện một số vấn đề và chúng tôi đang giải quyết các vấn đề đó.
Trình duyệt đang làm gì để giải quyết vấn đề này?
Cả Firefox và Chrome đều đang chạy các thử nghiệm trong đó các phiên bản trình duyệt hiện tại báo cáo là phiên bản chính 100 để phát hiện sự cố có thể xảy ra với trang web. Điều này đã dẫn đến một số vấn đề được báo cáo, một số vấn đề trong số đó đã được khắc phục. Những thử nghiệm này sẽ tiếp tục chạy cho đến khi phát hành phiên bản 100.
Chúng tôi cũng có các chiến lược giảm thiểu dự phòng, trong trường hợp bản phát hành phiên bản 100 cho các kênh ổn định gây thiệt hại nhiều hơn dự kiến cho các trang web.
Giảm thiểu trong Chrome
Trong Chrome, kế hoạch dự phòng là sử dụng một cờ để đóng băng phiên bản lớn ở 99 và báo cáo số phiên bản lớn thực tế trong phần phiên bản nhỏ của chuỗi User-Agent (mã đã ra mắt).
Phiên bản Chrome được báo cáo trong chuỗi Tác nhân người dùng tuân theo mẫu <major_version>.<minor_version>.<build_number>.<patch_number>
.
Nếu bạn sử dụng kế hoạch sao lưu, thì chuỗi User-Agent sẽ có dạng như sau:
99.101.4988.0
Chrome cũng đang chạy các thử nghiệm để đảm bảo việc báo cáo giá trị gồm ba chữ số trong phần phiên bản nhỏ của chuỗi không dẫn đến sự cố, vì phiên bản nhỏ trong chuỗi Tác nhân người dùng Chrome đã báo cáo 0 trong một thời gian rất dài. Nhóm Chrome sẽ quyết định xem có nên sử dụng tuỳ chọn sao lưu hay không dựa trên số lượng và mức độ nghiêm trọng của các vấn đề được báo cáo.
Giải pháp giảm thiểu trên Firefox
Trong Firefox, chiến lược sẽ phụ thuộc vào mức độ nghiêm trọng của lỗi. Firefox có một cơ chế can thiệp vào trang web.
Nhóm webcompat của Mozilla có thể khắc phục nhanh các trang web bị hỏng trong Firefox bằng cơ chế này. Nếu nhập about:compat
vào thanh URL của Firefox, bạn có thể thấy nội dung đang được khắc phục. Nếu một trang web bị lỗi với phiên bản lớn là 100 trên một miền cụ thể, thì bạn có thể khắc phục bằng cách gửi phiên bản 99.
Nếu sự cố xảy ra trên diện rộng, bạn có thể cố định số phiên bản lớn. Sau đó, có nhiều chiến lược có thể áp dụng, mỗi chiến lược đều có ưu và nhược điểm. Mozilla có thể gửi số phiên bản thực dưới dạng số phiên bản nhỏ, đóng băng hoàn toàn chuỗi hoặc gửi số phiên bản thực thông qua các tham số khác.
Mọi chiến lược làm tăng độ phức tạp cho chuỗi User-Agent đều có tác động mạnh mẽ đến hệ sinh thái. Hãy cùng nhau tránh một hành vi kỳ quặc khác.
Bạn có thể làm gì để giúp đỡ?
Trong Chrome và Firefox Nightly, bạn có thể định cấu hình trình duyệt để báo cáo phiên bản là 100 ngay bây giờ và báo cáo mọi vấn đề bạn gặp phải.
Định cấu hình Chrome để báo cáo phiên bản chính là 100
- Chuyển đến
chrome://flags/#force-major-version-to-100
. - Đặt tuỳ chọn thành
Enabled
.
Định cấu hình Firefox Nightly để báo cáo phiên bản chính là 100
- Mở trình đơn Cài đặt của Firefox Nightly.
- Tìm "Firefox 100" rồi đánh dấu vào tuỳ chọn "Chuỗi tác nhân người dùng Firefox 100".
Kiểm thử và báo cáo tệp
- Nếu bạn là người duy trì trang web, hãy kiểm thử trang web của bạn bằng Chrome và Firefox 100. Xem lại mã và thư viện phân tích cú pháp Tác nhân người dùng, đồng thời đảm bảo rằng các mã và thư viện đó có thể xử lý số phiên bản gồm ba chữ số. Chúng tôi đã biên dịch một số mẫu hiện đang bị lỗi.
- Nếu bạn phát triển thư viện phân tích cú pháp User-Agent, hãy thêm các chương trình kiểm thử để phân tích cú pháp các phiên bản lớn hơn hoặc bằng 100. Các thử nghiệm ban đầu của chúng tôi cho thấy rằng các phiên bản thư viện gần đây có thể xử lý chính xác vấn đề này. Tuy nhiên, web có một quá khứ lâu đời, vì vậy, nếu bạn có các phiên bản cũ của thư viện phân tích cú pháp, thì đã đến lúc kiểm tra các vấn đề và cuối cùng là nâng cấp.
- Nếu bạn đang duyệt web và nhận thấy bất kỳ vấn đề nào với phiên bản chính 100, hãy gửi báo cáo trên webcompat.com.