FireFox火狐浏覽器無法上(shàng)網原因查明:程序員大(dà)小寫搞錯了(le/liǎo)
最近兩天,在(zài)用 FireFox 火狐浏覽器的(de)用戶可能會出(chū)現無法連接上(shàng)網的(de)問題,起初以(yǐ)爲(wéi / wèi)是(shì)新版升級的(de)問題,還有人(rén)怪罪于(yú) Win 系統,然而(ér)現在(zài)問題查明了(le/liǎo),是(shì)火狐自己的(de)問題,程序員将部分代碼的(de)大(dà)小寫搞錯了(le/liǎo)。
火狐浏覽器前幾天發布了(le/liǎo) 96.0 版,說(shuō)是(shì)大(dà)幅減少了(le/liǎo)主線程負載,意味着可以(yǐ)明顯降低對系統資源的(de)占用,運行更快速、更流暢。
然而(ér)很多人(rén)升級之(zhī)後發現無法連接上(shàng)網,後面就(jiù)排查了(le/liǎo)一(yī / yì /yí)系列問題,首先以(yǐ)爲(wéi / wèi)真兇是(shì) FireFox 96.0 新版,結果發現 FireFox 95 及之(zhī)前的(de)版本也(yě)有問題。
還有原因歸罪于(yú) Windows 系統的(de)補丁升級,結果也(yě)不(bù)是(shì),另外還找了(le/liǎo) DNS、雲服務商等原因,也(yě)排除了(le/liǎo)。
最後發現問題跟 FireFox 的(de) HTTP3 有關,禁用之(zhī)後就(jiù)可以(yǐ)上(shàng)網,真兇現在(zài)找到(dào)了(le/liǎo),但到(dào)底是(shì)哪裏的(de)問題?Mozilla 基金會最後找到(dào)根源了(le/liǎo)——跟代碼大(dà)小寫有關。
據官方介紹,在(zài)解析 HTTP 标頭時(shí),FireFox 會用一(yī / yì /yí)個(gè)函數結束,該函數通常隻處理大(dà)寫的(de)字段,如果是(shì)小寫的(de)字母那就(jiù)會無法計算标頭長度,從而(ér)導緻 FireForx 代碼陷入無限循環中。
找到(dào)問題之(zhī)後,修複錯誤的(de)過程也(yě)很簡單,未來(lái)這(zhè)個(gè)代碼不(bù)會再區分大(dà)小寫了(le/liǎo)。