瀏覽器界的“千禧蟲”:Google已著手測試Chrome 100解決方案
Google Chrome 版本號即將突破 100,從前期測試結(jié)果來看該版本可能會導(dǎo)致部分網(wǎng)站無法正常工作。目前,Google已經(jīng)著手調(diào)查和測試解決方案。根據(jù) Chromium Bug Tracker,已知受影響的網(wǎng)站主要是那些用 Duda(一個網(wǎng)頁設(shè)計工具包)開發(fā)的網(wǎng)站。
這些網(wǎng)站都使用相同的代碼來檢查你使用的是什么版本的 Chrome。
一般來說,如果一個網(wǎng)站需要知道你使用的是什么瀏覽器以及它的最新版本,它將檢查所謂的“用戶代理字符串”(User Agent string)。這是一段文字,你的瀏覽器將其附加到它的每個網(wǎng)絡(luò)連接上,讓網(wǎng)站了解自己。如果你分析一下“用戶代理字符串”的實際內(nèi)容,你會發(fā)現(xiàn)有大量的廢話,其中大部分是為了保持與 20 世紀(jì) 90 年代和 21 世紀(jì)初的網(wǎng)站的兼容性。
但是,在這種情況下,這并不是最重要的。讓我們看一下 Chrome 瀏覽器的用戶代理字符串的例子。
- Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.45 Safari/537.36
在最后,你可以看到我們要找的部分是"Chrome/96.0.4664.45",它給了我們?yōu)g覽器的精確版本號。然而,大多數(shù)網(wǎng)絡(luò)開發(fā)者可能只關(guān)心主要的版本號,在我們的例子中是"96"。
由于用戶代理字符串是簡單的文本,開發(fā)人員需要設(shè)計一種方法來解釋這些信息以滿足他們的需要。在Duda的例子中,開發(fā)者選擇只讀取“Chrome/”之后的前兩位數(shù)字。這意味著“Chrome/99”將是99,但另一方面,“Chrome/100”將被視為 10 版本。
下一個問題是,Duda 會自動阻止任何低于 40 版本的 Chrome 瀏覽器--這是 2015 年發(fā)布的,如果這能提供一些觀點的話。隨即,Chrome 99 之后的每個版本的瀏覽器都會被認(rèn)為是 10 版本,因此被屏蔽。
那么,如果我們不能拋棄這些網(wǎng)站,可以做些什么呢?
第一個建議就是是改變開發(fā)者應(yīng)該檢查 Chrome 瀏覽器版本的地方。為了老網(wǎng)站的利益,Chrome 將把用戶代理字符串的第一個版本號鎖定為 99。如果網(wǎng)站開發(fā)人員想要檢查超過這個版本的具體版本,他們需要查看第二組數(shù)字。
例如,Chrome 100.0.1234.56 的瀏覽器版本在用戶代理字符串中會以“Chrome/99.100.1234.56”這樣的方式展示。為此,在 chrome://flags 中增加了一個新的標(biāo)志,讓 Googlers 和網(wǎng)絡(luò)開發(fā)人員測試各種網(wǎng)站是否會受到 Chrome 主要版本號位置的這種變化的影響。
將 User-Agent 字符串中的 Chrome 主要版本鎖定為 99,并強制將主要版本號放到次要版本位置。這個標(biāo)志是對 Chrome 100 意外中斷的一個備份計劃。
- #force-major-to-minor
然而,正如你可能注意到的,在該標(biāo)志的描述中,這個解決方案被認(rèn)為是一個"備份計劃"。目前的解決方案是由Google與個別開發(fā)者聯(lián)系,了解Chrome 100即將出現(xiàn)的問題。
到目前為止,該公司在這方面的努力實際上有一些運氣,因為Duda不是唯一出現(xiàn)問題的網(wǎng)絡(luò)工具包。直到幾天前,所有通過英國的Yell Business創(chuàng)建的網(wǎng)站也被設(shè)定為與Chrome 100中斷。在個別Googlers的宣傳下,Yell Business 為其整個網(wǎng)絡(luò)修復(fù)了這個問題。
目前的希望是,Google能夠明確地找到全網(wǎng)所有在Chrome 100發(fā)布時出現(xiàn)故障的網(wǎng)站,并就這個問題與它們的開發(fā)者聯(lián)系。如果這些問題能在3月底Chrome 100發(fā)布前有足夠的時間得到解決,那么對網(wǎng)絡(luò)開發(fā)者來說就根本不需要改變。