博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[IIS]修改MaxFieldLength与MaxRequestBytes彻底解决Request Too Long的问题
阅读量:4360 次
发布时间:2019-06-07

本文共 1554 字,大约阅读时间需要 5 分钟。

当 IIS7/7.5 收到的请求头的长度超过16K(默认值),就会引发"Bad Request - Request Too Long. HTTP Error 400. The size of the request headers is too long."的错误。

博客园服务器曾遭遇过这个问题,我为此写过一篇博文(),问题的原因是第三方统计服务cnzz的统计代码写入大量的cookie,请求时会携带着这些cookie,从而造成请求头长度超过限制。

本来以为这个问题只在Chrome中出现,后来有园友反馈Firefox也会出现这个问题。所以,要解决这个问题,必须从服务器端下手,这篇文章分享的就是如何从服务器端下手。

何处下手

根据IIS官方论坛的帖子(),16K的请求头/请求长度限制由是注册表(HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\HTTP\Parameters)中的两个参数 MaxFieldLength(请求头) 与 MaxRequestBytes(请求头与请求体) 决定的。所以,要从这两个参数下手。

了解下手的对象

通过微软官方文档()进一步了解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

这个方法已经在服务器上通过实际验证。

小结

搞技术的乐趣之一就是在遇到问题时能够找到自己心目中想要的解决方法,心目中想要的解决方法不是它已在你心中,而是当它出来时,你心中会知道 —— 就是它!

生活中也是一样,你心目中的那个人,你无法准确地描述出来,当她/他出现时,你心中会知道 —— 就是她/他。

转载于:https://www.cnblogs.com/Jeremy2001/p/9694872.html

你可能感兴趣的文章
java.oracle32位,Java、JavaScript、php、mysql、oracle生成uuid(32位)
查看>>
oracle 11g xe性能,Oracle 11g xe版本---总结1
查看>>
php猴子吃桃问题代码,java递归:猴子吃桃问题
查看>>
linux压缩多文件,linux++压缩多个文件夹
查看>>
linux扩充文件夹容量,Linux扩充磁盘空间 【附查看磁盘命令】
查看>>
linux内外部命令,linux系统内部命令和外部命令
查看>>
水星UD6S网卡Linux驱动,水星UD6S无线网卡驱动(修复水星UD6S无线网卡连接异常问题)V1.0 免费版...
查看>>
linux修改英文环境,Centos中文、英文系统环境设置
查看>>
Linux2019的终端,kali linux2019 终端在哪
查看>>
win10远程ubuntu linux,使用win10远程控制ubuntu14.04(2)
查看>>
linux 内存大自动重启,centos/linux内存/负载过高自动重启apache的脚本,保护你的vps不因超负荷被关闭...
查看>>
linux 断点续传get工具,linux wget 命令常见用法 (断点续传 , GET 请求链接)
查看>>
nginx linux详细安装部署教程,Nginx Linux详细安装及部署实战
查看>>
linux 源码安装httped,Linux下用Intel编译器编译安装NetCDF-Fortan库(4.2版本后)
查看>>
linux shell 10,10个实战及面试常用Linux Shell脚本编写
查看>>
linux系统安装视频播放器,Linux操作系统上安装Mplayer播放器的方法
查看>>
linux禁用nouveau grub,NVIDIA驱动安装之禁用nouveau
查看>>
linux kill的最好方法,技术|Linux mkdir、tar 和 kill 命令的 4 个有用小技巧
查看>>
linux禁掉英伟达显卡,【禁用nouveau驱动】Ubuntu下使用Nvidia显卡导致异常重启
查看>>
r语言8c多字节字符串有错,R语言答疑:txt文件无法被R正确读入
查看>>