最近兩天,在用FireFox火狐瀏覽器的用戶可能會(huì)出現(xiàn)無法連接上網(wǎng)的問題,起初以為是新版升級的問題,還有人怪罪于Win系統(tǒng),然而現(xiàn)在問題查明了,是火狐自己的問題,程序員將部分代碼的大小寫搞錯(cuò)了。
火狐瀏覽器前幾天發(fā)布了96.0版,說是大幅減少了主線程負(fù)載,意味著可以明顯降低對系統(tǒng)資源的占用,運(yùn)行更快速、更流暢。
然而很多人升級之后發(fā)現(xiàn)無法連接上網(wǎng),后面就排查了一系列問題,首先以為真兇是FireFox 96.0新版,結(jié)果發(fā)現(xiàn)FireFox 95及之前的版本也有問題。
還有原因歸罪于Windows系統(tǒng)的補(bǔ)丁升級,結(jié)果也不是,另外還找了DNS、云服務(wù)商等原因,也排除了。
最后發(fā)現(xiàn)問題跟FireFox的HTTP3有關(guān),禁用之后就可以上網(wǎng),真兇現(xiàn)在找到了,但到底是哪里的問題?Mozilla 基金會(huì)最后找到根源了——跟代碼大小寫有關(guān)。
據(jù)官方介紹,在解析HTTP標(biāo)頭時(shí),F(xiàn)ireFox會(huì)用一個(gè)函數(shù)結(jié)束,該函數(shù)通常只處理大寫的字段,如果是小寫的字母那就會(huì)無法計(jì)算標(biāo)頭長度,從而導(dǎo)致FireForx代碼陷入無限循環(huán)中。
找到問題之后,修復(fù)錯(cuò)誤的過程也很簡單,未來這個(gè)代碼不會(huì)再區(qū)分大小寫了。