|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
系统管理相关命令:df、top、free、quota、at、lp、adduser、groupaddkill、crontab、tar、unzip、gunzip、last
当IIS7/7.5收到的哀求头的长度凌驾16K(默许值),就会激发"BadRequest-RequestTooLong.HTTPError400.Thesizeoftherequestheadersistoolong."的毛病。
博客园服务器曾遭受过这个成绩,我为此写过一篇博文(cnzz统计代码引发的BadRequest-RequestTooLong),成绩的缘故原由是第三方统计服务cnzz的统计代码写进大批的cookie,哀求时会照顾着这些cookie,从而形成哀求头长度凌驾限定。
原本觉得这个成绩只在Chrome中呈现,厥后有园友反应Firefox也会呈现这个成绩。以是,要办理这个成绩,必需从服务器端动手,这篇文章分享的就是怎样从服务器端动手。
那边动手
依据IIS官方论坛的帖子(HTTP400.Thesizeoftherequestheadersistoolong),16K的哀求头/哀求长度限定由是注册表(HKEY_LOCAL_MACHINESystemCurrentControlSetServicesHTTPParameters)中的两个参数MaxFieldLength(哀求头)与MaxRequestBytes(哀求头与哀求体)决意的。以是,要从这两个参数动手。
懂得动手的工具
经由过程微软官方文档(http://support.microsoft.com/kb/820129)进一步懂得MaxRequestBytes与MaxFieldLength:
MaxFieldLength-Setsanupperlimitforeachheader.
用于设置每个哀求头的字节数下限(默许16K)。
MaxRequestBytes-DeterminestheupperlimitforthetotalsizeoftheRequestlineandtheheaders.
用于设置哀求行(哀求体)与哀求头的总字节数下限(默许16K)。
怎样动手
动手也就是调剂MaxFieldLength与MaxRequestBytes的值(这里假定将这两个值修正为32K),并使其失效。
运转regedit,进进HKEY_LOCAL_MACHINESystemCurrentControlSetServicesHTTPParameters,
1.增加范例为DWORD(32-bit)、名为MaxFieldLength、值为十进制32768的项目;
2.增加范例为DWORD(32-bit)、名为MaxRequestBytes、值为十进制32768的项目。
增加好了,怎样让它们失效呢?最复杂的办法就是重启,但是关于服务器,最不想做的就是重启。
还好,微软官方文档中提到了不重启的办理办法,必要运转四个命令:
。代码以下:
netstophttp
netstarthttp
netstopiisadmin/y
netstartservicename
可是第3个命令netstopiisadmin会停用IIS相干的一切服务,第4个命令要将IIS相干的一切服务一个一个启动。
固然不必要重启服务器,可是这四个命令的办理计划我不喜好。。。在网上也没找到更好的办理办法。。。
厥后,经由过程探索,找到了一个更复杂的办法,只需三个命令:
。代码以下:
netstophttp
netstarthttp
iisreset
这个办法已在服务器上经由过程实践考证。
小结
弄手艺的兴趣之一就是在碰到成绩时可以找到本人心目中想要的办理办法,心目中想要的办理办法不是它已在你心中,而是当它出来时,你心中会晓得――就是它!
生存中也是一样,你心目中的谁人人,你没法正确地形貌出来,当她/他呈现时,你心中会晓得――就是她/他。
由于在linux中,用户权限很大,做任何事情都很自由,所以,你往往需要知道你做的每一步在干什么。 |
|