修改MaxFieldLength与MaxRequestBytes彻底解决Request Too Long的问题
当 IIS7/7.5 收到的请求头的长度超过16K(默认值),就会引发"Bad Request - Request Too Long. HTTP Error 400. The size of the request headers is too long."的错误。
博客园服务器曾遭遇过这个问题,我为此写过一篇博文(cnzz统计代码引起的Bad Request - Request Too Long),问题的原因是第三方统计服务cnzz的统计代码写入大量的cookie,请求时会携带着这些cookie,从而造成请求头长度超过限制。
本来以为这个问题只在Chrome中出现,后来有园友反馈Firefox也会出现这个问题。所以,要解决这个问题,必须从服务器端下手,这篇文章分享的就是如何从服务器端下手。
何处下手
根据IIS官方论坛的帖子(HTTP 400. The size of the request headers is too long),16K的请求头/请求长度限制由是注册表(HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\HTTP\Parameters)中的两个参数 MaxFieldLength(请求头) 与 MaxRequestBytes(请求头与请求体) 决定的。所以,要从这两个参数下手。
了解下手的对象
通过微软官方文档(http://support.microsoft.com/kb/820129)进一步了解MaxRequestBytes与MaxFieldLength:
MaxFieldLength - Sets an upper limit for each header.
用于设置每一个请求头的字节数上限(默认16K)。
MaxRequestBytes - Determines the upper limit for the total size of the Request line and the headers.
用于设置请求行(请求体)与请求头的总字节数上限(默认16K)。
如何下手
下手也就是调整 MaxFieldLength 与 MaxRequestBytes 的值(这里假设将这两个值修改为32K),并使其生效。
运行regedit,进入 HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\HTTP\Parameters ,
1. 添加类型为 DWORD(32-bit)、名为 MaxFieldLength、值为十进制32768的项目;
2. 添加类型为 DWORD(32-bit)、名为 MaxRequestBytes、值为十进制32768的项目。
添加好了,如何让它们生效呢?最简单的方法就是重启,可是对于服务器,最不想做的就是重启。
还好,微软官方文档中提到了不重启的解决方法,需要运行四个命令:
net stop http net start http net stop iisadmin /y net start servicename
但是第3个命令 net stop iisadmin 会停用IIS相关的所有服务,第4个命令要将IIS相关的所有服务一个一个启动。
虽然不需要重启服务器,但是这四个命令的解决方案我不喜欢。。。在网上也没找到更好的解决方法。。。
后来,通过摸索,找到了一个更简单的方法,只需三个命令:
net stop http net start http iisreset
这个方法已经在服务器上通过实际验证。
小结
搞技术的乐趣之一就是在遇到问题时能够找到自己心目中想要的解决方法,心目中想要的解决方法不是它已在你心中,而是当它出来时,你心中会知道 —— 就是它!
生活中也是一样,你心目中的那个人,你无法准确地描述出来,当她/他出现时,你心中会知道 —— 就是她/他。
相关文章
让Win2008+IIS7+ASP.NET支持10万并发请求
由于之前使用的是默认配置,服务器最多只能处理5000个同时请求,今天下午由于某种情况造成同时请求超过5000,从而出现了上面的错误2013-06-06
Windows下maven安装配置图文教程(包括本地化仓库配置)
这篇文章主要介绍了Windows下maven安装配置图文教程(包括本地化仓库配置),本文图文并茂给大家介绍的非常详细,具有一定的参考借鉴价值 ,需要的朋友可以参考下2019-05-05
Windows server 2008 R2配置多个远程连接的教程
这篇文章主要为大家详细介绍了Windows server 2008 R2配置多个远程连接的教程,具有一定的参考价值,感兴趣的小伙伴们可以参考一下2018-07-07
防止黑客侵入你正在使用的Windows系统(克隆管理员账户)
当黑客入侵一台主机后,会想方设法保护自己的“劳动成果”,因此会在肉鸡上留下种种后门来长时间得控制肉鸡,其中使用最多的就是账户隐藏技术2012-07-07
windows server 2008 服务器安全设置初级配置
这里为大家分享的是windows server 2008 服务器安全设置初级配置,基本上最基本上的东西都包括了,需要的朋友可以参考下2017-04-04
Windows server 2008 R2 服务器系统安全防御加固方法
这篇文章主要介绍了Windows server 2008 R2 服务器系统安全防御加固方法,需要的朋友可以参考下2015-07-07


最新评论