cnzz統計代碼引起的Bad Request – Request Too Long

來源:互聯網
上載者:User

問題起因

今天一位園友向我們反饋,用Chrome開啟某些部落格文章時,會出現"Bad Request - Request Too Long. HTTP Error 400. The size of the request headers is too long."的錯誤頁面:

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

之前我們遇到過一次這樣的問題,當時以為是偶然因素引起的Chrome問題,於是在"%LOCALAPPDATA%\Google\"中將Chrome的設定檔重新命名,讓Chrome重建配置,解決了問題。

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

解決過程

開始我們推測,可能是某些原因造成Chrome發出的要求標頭包含過多內容。查看Chrome請求的網址是正常的,也沒發現Request Header的異常。既然沒在Chrome找到問題的原因,那我們從服務端下手吧,請求長就長一點,只要能讓使用者看到正常的內容。

服務端IIS究竟在哪個地方返回這個錯誤的?開始以為是Request Filtering Module,調整了Request Limits設定不能解決問題,禁用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中的兩個參數決定的:MaxFieldLength與MaxRequestBytes,預設值都是16384位元組,詳見Http.sys registry settings for IIS。

由於修改這兩個設定需要重啟IIS(net stop http, net start http, iisreset),並且只是表面上解決問題,所以我們沒有立即採取這個方法。又回過頭來在Chrome中查看要求標頭,突然發現cookie的值好長。

進一步查看cookie:

很多cnzz_eid,這是cnzz統計代碼產生的,可是我們在部落格中沒有使用cnzz。但是,有的使用者部落格自己加了cnzz的統計代碼。我們檢查了一些會產生"Bad Request - Request Too Long"的頁面,的確有些加了cnzz的代碼。

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

原來是cnzz惹的禍!

為什麼在IE與Firefox中不會出現這個問題呢?

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

小結

這篇文章分享的內容是:當IIS返回"Bad Request - Request Too Long. HTTP Error 400. The size of the request headers is too long."的錯誤時,說明用戶端發出的要求標頭長度超出了Http.sys的限制,這個限制是由註冊表"HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\HTTP\Parameters"中的兩個參數MaxFieldLength與MaxRequestBytes決定的,預設值是16384位元組。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.