欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

修改MaxFieldLength與MaxRequestBytes徹底解決Request Too Long的問(wèn)題

 更新時(shí)間:2023年10月26日 12:58:56   投稿:mdxy-dxy  
當(dāng) IIS6/IIS7/7.5 收到的請(qǐng)求頭的長(zhǎng)度超過(guò)16K(默認(rèn)值),就會(huì)引發(fā)"Bad Request - Request Too Long. HTTP Error 400. The size of the request headers is too long."的錯(cuò)誤

當(dāng) IIS7/7.5 收到的請(qǐng)求頭的長(zhǎng)度超過(guò)16K(默認(rèn)值),就會(huì)引發(fā)"Bad Request - Request Too Long. HTTP Error 400. The size of the request headers is too long."的錯(cuò)誤。

博客園服務(wù)器曾遭遇過(guò)這個(gè)問(wèn)題,我為此寫(xiě)過(guò)一篇博文(cnzz統(tǒng)計(jì)代碼引起的Bad Request - Request Too Long),問(wèn)題的原因是第三方統(tǒng)計(jì)服務(wù)cnzz的統(tǒng)計(jì)代碼寫(xiě)入大量的cookie,請(qǐng)求時(shí)會(huì)攜帶著這些cookie,從而造成請(qǐng)求頭長(zhǎng)度超過(guò)限制。

本來(lái)以為這個(gè)問(wèn)題只在Chrome中出現(xiàn),后來(lái)有園友反饋Firefox也會(huì)出現(xiàn)這個(gè)問(wèn)題。所以,要解決這個(gè)問(wèn)題,必須從服務(wù)器端下手,這篇文章分享的就是如何從服務(wù)器端下手。

何處下手

根據(jù)IIS官方論壇的帖子(HTTP 400. The size of the request headers is too long),16K的請(qǐng)求頭/請(qǐng)求長(zhǎng)度限制由是注冊(cè)表(HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\HTTP\Parameters)中的兩個(gè)參數(shù) MaxFieldLength(請(qǐng)求頭) 與 MaxRequestBytes(請(qǐng)求頭與請(qǐng)求體) 決定的。所以,要從這兩個(gè)參數(shù)下手。

了解下手的對(duì)象

通過(guò)微軟官方文檔(http://support.microsoft.com/kb/820129)進(jìn)一步了解MaxRequestBytes與MaxFieldLength:

MaxFieldLength - Sets an upper limit for each header.

用于設(shè)置每一個(gè)請(qǐng)求頭的字節(jié)數(shù)上限(默認(rèn)16K)。

MaxRequestBytes - Determines the upper limit for the total size of the Request line and the headers.

用于設(shè)置請(qǐng)求行(請(qǐng)求體)與請(qǐng)求頭的總字節(jié)數(shù)上限(默認(rèn)16K)。

如何下手

下手也就是調(diào)整 MaxFieldLength 與 MaxRequestBytes 的值(這里假設(shè)將這兩個(gè)值修改為32K),并使其生效。

運(yùn)行regedit,進(jìn)入 HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\HTTP\Parameters ,

1. 添加類型為 DWORD(32-bit)、名為 MaxFieldLength、值為十進(jìn)制32768的項(xiàng)目;
2. 添加類型為 DWORD(32-bit)、名為 MaxRequestBytes、值為十進(jìn)制32768的項(xiàng)目。



添加好了,如何讓它們生效呢?最簡(jiǎn)單的方法就是重啟,可是對(duì)于服務(wù)器,最不想做的就是重啟。

還好,微軟官方文檔中提到了不重啟的解決方法,需要運(yùn)行四個(gè)命令:

net stop http
net start http
net stop iisadmin /y
net start servicename

但是第3個(gè)命令 net stop iisadmin 會(huì)停用IIS相關(guān)的所有服務(wù),第4個(gè)命令要將IIS相關(guān)的所有服務(wù)一個(gè)一個(gè)啟動(dòng)。
雖然不需要重啟服務(wù)器,但是這四個(gè)命令的解決方案我不喜歡。。。在網(wǎng)上也沒(méi)找到更好的解決方法。。。
后來(lái),通過(guò)摸索,找到了一個(gè)更簡(jiǎn)單的方法,只需三個(gè)命令:

net stop http
net start http
iisreset

這個(gè)方法已經(jīng)在服務(wù)器上通過(guò)實(shí)際驗(yàn)證。

小結(jié)

搞技術(shù)的樂(lè)趣之一就是在遇到問(wèn)題時(shí)能夠找到自己心目中想要的解決方法,心目中想要的解決方法不是它已在你心中,而是當(dāng)它出來(lái)時(shí),你心中會(huì)知道 —— 就是它!
生活中也是一樣,你心目中的那個(gè)人,你無(wú)法準(zhǔn)確地描述出來(lái),當(dāng)她/他出現(xiàn)時(shí),你心中會(huì)知道 —— 就是她/他。

相關(guān)文章

最新評(píng)論