溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

cnzz統(tǒng)計代碼引起的Bad Request - Request Too Long的原因分析

發(fā)布時間:2021-11-09 16:31:56 來源:億速云 閱讀:549 作者:柒染 欄目:建站服務(wù)器

這期內(nèi)容當(dāng)中小編將會給大家?guī)碛嘘P(guān)cnzz統(tǒng)計代碼引起的Bad Request - Request Too Long的原因分析,文章內(nèi)容豐富且以專業(yè)的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。

問題起因

今天一位網(wǎng)友向我們反饋,用Chrome打開某些博客文章時,會出現(xiàn)"Bad Request - Request Too Long. HTTP Error 400. The size of the request headers is too long."的錯誤頁面:

cnzz統(tǒng)計代碼引起的Bad Request - Request Too Long的原因分析

用IE, Firefox都沒問題,唯有Chrome。

之前我們遇到過一次這樣的問題,當(dāng)時以為是偶然因素引起的Chrome問題,于是在"%LOCALAPPDATA%\Google\"中將Chrome的配置文件重命名,讓Chrome重建配置,解決了問題。

今天,這個問題再次出現(xiàn),就不能忽視了,必須找出問題的真正原因并找到解決辦法。

解決過程

開始我們推測,可能是某些原因造成Chrome發(fā)出的請求頭包含過多內(nèi)容。查看Chrome請求的網(wǎng)址是正常的,也沒發(fā)現(xiàn)Request Header的異常。既然沒在Chrome找到問題的原因,那我們從服務(wù)端下手吧,請求長就長一點,只要能讓用戶看到正常的內(nèi)容。

服務(wù)端IIS究竟在哪個地方返回這個錯誤的?開始以為是Request Filtering Module,調(diào)整了Request Limits設(shè)置不能解決問題,禁用Request Filtering Module也解決不了問題。

后來在IIS官方論壇的帖子HTTP 400. The size of the request headers is too long中得知,這個錯誤是Http.sys返回的,請求頭長度限制是由注冊表HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\HTTP\Parameters中的兩個參數(shù)決定的:MaxFieldLength與MaxRequestBytes,缺省值都是16384字節(jié),詳見Http.sys registry settings for IIS。

由于修改這兩個設(shè)置需要重啟IIS(net stop http, net start http, iisreset),并且只是表面上解決問題,所以我們沒有立即采取這個方法。又回過頭來在Chrome中查看請求頭,突然發(fā)現(xiàn)cookie的值好長。

cnzz統(tǒng)計代碼引起的Bad Request - Request Too Long的原因分析

進(jìn)一步查看cookie:

cnzz統(tǒng)計代碼引起的Bad Request - Request Too Long的原因分析

很多cnzz_eid,這是cnzz統(tǒng)計代碼產(chǎn)生的,可是我們在博客中沒有使用cnzz。但是,有的用戶博客自己加了cnzz的統(tǒng)計代碼。我們檢查了一些會產(chǎn)生"Bad Request - Request Too Long"的頁面,的確有些加了cnzz的代碼。

我們手動在Chrome中刪除了一些帶有cnzz_eid的cookie,問題就解決了。

cnzz統(tǒng)計代碼引起的Bad Request - Request Too Long的原因分析

原來是cnzz惹的禍!

為什么在IE與Firefox中不會出現(xiàn)這個問題呢?

可能是IE與Firefox對于request header過長的請求會自動截斷;而Chrome對此置之不理。

當(dāng)IIS返回"Bad Request - Request Too Long. HTTP Error 400. The size of the request headers is too long."的錯誤時,說明客戶端發(fā)出的請求頭長度超出了Http.sys的限制,這個限制是由注冊表"HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\HTTP\Parameters"中的兩個參數(shù)MaxFieldLength與MaxRequestBytes決定的,默認(rèn)值是16384字節(jié)。

上述就是小編為大家分享的cnzz統(tǒng)計代碼引起的Bad Request - Request Too Long的原因分析了,如果剛好有類似的疑惑,不妨參照上述分析進(jìn)行理解。如果想知道更多相關(guān)知識,歡迎關(guān)注億速云行業(yè)資訊頻道。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI