Chrome 和 Firefox 即將支援主要版本 100

使用者代理程式字串改變,Chrome 和 Firefox 採取的策略來降低影響,以及如何提供協助。

阿里貝雅德
Ali Beyad
卡爾杜波斯特
Karl Dubost
米莉卡.米哈吉利亞 (Milica Mihajlija)
Milica Mihajlija

ChromeFirefox 會在幾個月內推出 100 版。對於仰賴辨識瀏覽器版本執行商業邏輯的網站,這種做法可能會導致網站服務中斷。本文將探討事件時間軸、Chrome 和 Firefox 目前用於降低影響的策略,以及您可以提供哪些協助。

使用者代理程式字串

使用者代理程式 (UA) 是瀏覽器在 HTTP 標頭中傳送的字串,可讓伺服器識別瀏覽器。您也可以透過搭配 navigator.userAgent 的 JavaScript 存取這個字串。它通常會採用以下格式:

<browser_name>/<major_version>.<minor_version>

舉例來說,本文發布時瀏覽器的最新版本包括:

  • 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

主要版本 100 (三位數版本號碼)

主要版本 100 對 Chrome 和 Firefox 來說是重大里程碑。此外,因為我們將兩位數轉換為三位數版本號碼,這種做法也可能導致網站無法正常運作。網頁程式開發人員使用各種技術來剖析這些字串,從自訂程式碼到使用 User-Agent 剖析程式庫,然後可用於判斷對應的處理邏輯。User-Agent 和其他版本回報機制很快就會回報三位數的版本號碼。

版本 100 時間表

第 100 版瀏覽器將先推出實驗版本 (Chrome Canary、Firefox 夜間)、Beta 版,最後再支援穩定版。

瀏覽者 時間表
Chrome (發布時間表) 2022 年 3 月 29 日
Firefox (發布時間表) 2022 年 5 月 3 日

為什麼三位數的版本號碼有問題?

當瀏覽器在 12 年多前剛推出 10 版時,就在使用者代理程式剖析程式庫中發現許多問題,原因是主要版本號碼從一位數變成二。

在無法遵循單一規格的情況下,針對 User-Agent 字串和網站專屬的 User-Agent 剖析作業,不同瀏覽器會採用不同的格式。部分剖析程式庫可能包含硬式編碼的假設或錯誤,而這些假設沒有考量到三位數的主要版本號碼。許多程式庫改善了瀏覽器在改用兩位數版本號碼時的剖析邏輯,因此達成三位數里程碑的情形應可減少問題。Chrome 團隊的工程師 MikeTaylor 對常見的通用 Analytics (分析) 剖析程式庫完成問卷調查,但並未發現任何問題。在這個欄位執行 Chrome 實驗後,我們發現了一些問題正在努力解決。

瀏覽器有何作用?

Firefox 和 Chrome 均在執行實驗,目前瀏覽器報告的主要版本為 100,以便偵測可能的網站故障。這導致一些回報的問題,其中一些問題已修正。這些實驗會持續進行,直到 100 版發布為止。

此外,還有一些備份緩解策略,以防發布版本 100 時,將造成網站遭受的破壞比預期更多。

Chrome 因應措施

在 Chrome 中,備份方案是使用旗標將主要版本凍結為 99,並在 User-Agent 字串的子版本部分 (程式碼已「已抵達」) 回報實際主要版本號碼。

User-Agent 字串中回報的 Chrome 版本會採用 <major_version>.<minor_version>.<build_number>.<patch_number> 模式。

如果採用備份方案,使用者代理程式字串看起來會像這樣:

99.101.4988.0

由於 Chrome 使用者代理程式字串中的次要版本已回報 0 的時間很長,因此 Chrome 也會進行實驗,確保字串次要版本部分中的三位數值不會導致破壞。Chrome 團隊會根據回報的問題數量和嚴重程度,決定是否改用備用選項。

Firefox 因應措施

在 Firefox 中,策略取決於破壞性的重要性。Firefox 採用網站介入機制。Mozilla Webcompat 團隊可以利用這項機制,修正 Firefox 中損毀的網站。在 Firefox 網址列中輸入 about:compat,可以看到目前正在修正的內容。如果網站的主要版本在特定網域中是 100,可以改為傳送 99 版來修正問題。

如果中斷情形變大,則可凍結主要版本號碼。有不同的可行策略,每個策略各有優缺點。Mozilla 會以次要版本號碼的形式傳送實際版本號碼、完全依原樣凍結字串,或是透過其他參數傳送實際版本號碼。

每項讓 User-Agent 字串增加複雜度的策略,都會對生態系統產生重大影響。我們一起來避免另有另一個搞怪的行為

你可以提供什麼協助?

在 Chrome 和 Firefox 的夜間模式中,您可以將瀏覽器設定為立即將版本回報為 100,並回報您遇到的任何問題。

設定讓 Chrome 回報主要版本為 100

  1. 前往 chrome://flags/#force-major-version-to-100
  2. 將選項設為 Enabled

將 Firefox 夜間設定,將主要版本回報為 100

  1. 開啟 Firefox 夜間的設定選單。
  2. 搜尋「Firefox 100」,然後勾選「Firefox 100 User-Agent 字串」選項。

測試和檔案報告

  • 如果您是網站維護人員,請使用 Chrome 和 Firefox 100 測試網站。查看您的使用者代理程式剖析程式碼和程式庫,並確認這些程式庫能夠處理三位數的版本號碼。我們編譯了某些目前破壞的模式
  • 如果您開發的是 User-Agent 剖析程式庫,請新增測試,剖析大於或等於 100 的版本。早期測試顯示,最近的程式庫可正確處理。不過,由於網頁版很久以前,所以如果您有舊版剖析程式庫,請檢查是否有問題並進行最終升級。
  • 如果您在瀏覽網路時發現主要版本 100 有任何問題,請前往 webcompat.com 提交報告