修改MaxFieldLength與MaxRequestBytes徹底解決Request Too Long的問題
當(dāng) IIS7/7.5 收到的請求頭的長度超過16K(默認(rèn)值),就會引發(fā)"Bad Request - Request Too Long. HTTP Error 400. The size of the request headers is too long."的錯誤。
博客園服務(wù)器曾遭遇過這個問題,我為此寫過一篇博文(cnzz統(tǒng)計代碼引起的Bad Request - Request Too Long),問題的原因是第三方統(tǒng)計服務(wù)cnzz的統(tǒng)計代碼寫入大量的cookie,請求時會攜帶著這些cookie,從而造成請求頭長度超過限制。
本來以為這個問題只在Chrome中出現(xiàn),后來有園友反饋Firefox也會出現(xiàn)這個問題。所以,要解決這個問題,必須從服務(wù)器端下手,這篇文章分享的就是如何從服務(wù)器端下手。
何處下手
根據(jù)IIS官方論壇的帖子(HTTP 400. The size of the request headers is too long),16K的請求頭/請求長度限制由是注冊表(HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\HTTP\Parameters)中的兩個參數(shù) MaxFieldLength(請求頭) 與 MaxRequestBytes(請求頭與請求體) 決定的。所以,要從這兩個參數(shù)下手。
了解下手的對象
通過微軟官方文檔(http://support.microsoft.com/kb/820129)進(jìn)一步了解MaxRequestBytes與MaxFieldLength:
MaxFieldLength - Sets an upper limit for each header.
用于設(shè)置每一個請求頭的字節(jié)數(shù)上限(默認(rèn)16K)。
MaxRequestBytes - Determines the upper limit for the total size of the Request line and the headers.
用于設(shè)置請求行(請求體)與請求頭的總字節(jié)數(shù)上限(默認(rèn)16K)。
如何下手
下手也就是調(diào)整 MaxFieldLength 與 MaxRequestBytes 的值(這里假設(shè)將這兩個值修改為32K),并使其生效。
運(yùn)行regedit,進(jìn)入 HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\HTTP\Parameters ,
1. 添加類型為 DWORD(32-bit)、名為 MaxFieldLength、值為十進(jìn)制32768的項目;
2. 添加類型為 DWORD(32-bit)、名為 MaxRequestBytes、值為十進(jìn)制32768的項目。
添加好了,如何讓它們生效呢?最簡單的方法就是重啟,可是對于服務(wù)器,最不想做的就是重啟。
還好,微軟官方文檔中提到了不重啟的解決方法,需要運(yùn)行四個命令:
net stop http net start http net stop iisadmin /y net start servicename
但是第3個命令 net stop iisadmin 會停用IIS相關(guān)的所有服務(wù),第4個命令要將IIS相關(guān)的所有服務(wù)一個一個啟動。
雖然不需要重啟服務(wù)器,但是這四個命令的解決方案我不喜歡。。。在網(wǎng)上也沒找到更好的解決方法。。。
后來,通過摸索,找到了一個更簡單的方法,只需三個命令:
net stop http net start http iisreset
這個方法已經(jīng)在服務(wù)器上通過實際驗證。
小結(jié)
搞技術(shù)的樂趣之一就是在遇到問題時能夠找到自己心目中想要的解決方法,心目中想要的解決方法不是它已在你心中,而是當(dāng)它出來時,你心中會知道 —— 就是它!
生活中也是一樣,你心目中的那個人,你無法準(zhǔn)確地描述出來,當(dāng)她/他出現(xiàn)時,你心中會知道 —— 就是她/他。
相關(guān)文章
讓W(xué)in2008+IIS7+ASP.NET支持10萬并發(fā)請求
由于之前使用的是默認(rèn)配置,服務(wù)器最多只能處理5000個同時請求,今天下午由于某種情況造成同時請求超過5000,從而出現(xiàn)了上面的錯誤2013-06-06
Windows下maven安裝配置圖文教程(包括本地化倉庫配置)
這篇文章主要介紹了Windows下maven安裝配置圖文教程(包括本地化倉庫配置),本文圖文并茂給大家介紹的非常詳細(xì),具有一定的參考借鑒價值 ,需要的朋友可以參考下2019-05-05
Windows server 2008 R2配置多個遠(yuǎn)程連接的教程
這篇文章主要為大家詳細(xì)介紹了Windows server 2008 R2配置多個遠(yuǎn)程連接的教程,具有一定的參考價值,感興趣的小伙伴們可以參考一下2018-07-07
防止黑客侵入你正在使用的Windows系統(tǒng)(克隆管理員賬戶)
當(dāng)黑客入侵一臺主機(jī)后,會想方設(shè)法保護(hù)自己的“勞動成果”,因此會在肉雞上留下種種后門來長時間得控制肉雞,其中使用最多的就是賬戶隱藏技術(shù)2012-07-07
windows server 2008 服務(wù)器安全設(shè)置初級配置
這里為大家分享的是windows server 2008 服務(wù)器安全設(shè)置初級配置,基本上最基本上的東西都包括了,需要的朋友可以參考下2017-04-04
Windows下Memcache的安裝及PHP擴(kuò)展配置方法
這篇文章主要介紹了Windows下Memcache的安裝及PHP擴(kuò)展配置方法,需要的朋友可以參考下2015-10-10
Windows server 2008 R2 服務(wù)器系統(tǒng)安全防御加固方法
這篇文章主要介紹了Windows server 2008 R2 服務(wù)器系統(tǒng)安全防御加固方法,需要的朋友可以參考下2015-07-07

