苏飞论坛

 找回密码
 马上注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

分布式系统框架(V2.0) 轻松承载百亿数据,千万流量!讨论专区 - 源码下载 - 官方教程

HttpHelper万能框架(V2.3-含.netcore) HttpHelper官方出品,无敌框架讨论区 - 源码下载 - 在线测试和代码生成

HttpHelper爬虫类(V2.0) 最牛的爬虫类,没有爬不到只有想不到 源码 - 代码生成器 - 讨论区 - 教程- 例子

查看: 4964|回复: 1

[IIS] 解决“Bad Request - Request Too Long”完美方案

[复制链接]
发表于 2016-12-26 11:00:06 | 显示全部楼层 |阅读模式
今天在做东西时发现我的许多本地站点都发现了
[C#] 纯文本查看 复制代码
解决“Bad <wbr>Request <wbr>- <wbr>Request <wbr>Too <wbr>Long”

这个错误;然而我在firefox里同样的站点就不会发生这样的事,很是奇怪,仔细想想,以前好像也发生过这样的事,都是没太理会,今天我查找资料想想解决办法。
于是在找的过程中我发现下面一篇文章:
[C#] 纯文本查看 复制代码
cnzz统计代码引起的Bad Request - Request Too Long

解决过程
开始我们推测,可能是某些原因造成Chrome发出的请求头包含过多内容。查看Chrome请求的网址是正常的,也没发现Request Header的异常。既然没在Chrome找到问题的原因,那我们从服务端下手吧,请求长就长一点,只要能让用户看到正常的内容。
服务端IIS究竟在哪个地方返回这个错误的?开始以为是Request Filtering Module,调整了Request Limits设置不能解决问题,禁用Request Filtering Module也解决不了问题。
后来在IIS官方论坛的帖子HTTP 400. The size of the request headers is too long中得知,这个错误是Http.sys返回的,请求头长度限制是由注册表HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\HTTP\Parameters中的两个参数决定的:MaxFieldLength与MaxRequestBytes,缺省值都是16384字节,详见Http.sys registry settings for IIS。
由于修改这两个设置需要重启IIS,并且只是表面上解决问题,所以我们没有立即采取这个方法。又回过头来在Chrome中查看请求头,突然发现cookie的值好长。
[C#] 纯文本查看 复制代码
解决“Bad <wbr>Request <wbr>- <wbr>Request <wbr>Too <wbr>Long”

8a8fd385tc254c286f4f7&amp;690.bmp
进一步查看cookie:
8a8fd385t79d546b02acd&amp;690.jpg
[C#] 纯文本查看 复制代码
解决“Bad <wbr>Request <wbr>- <wbr>Request <wbr>Too <wbr>Long”


很多cnzz_eid,这是cnzz统计代码产生的,可是我们在博客中没有使用cnzz。但是,有的用户博客自己加了cnzz的统计代码。我们检查了一些会产生"Bad Request - Request Too Long"的页面,的确有些加了cnzz的代码。
我们手动在Chrome中删除了一些带有cnzz_eid的cookie,问题就解决了。

解决“Bad <wbr>Request <wbr>- <wbr>Request <wbr>Too <wbr>Long”
原来是cnzz惹的祸!
为什么在IE与Firefox中不会出现这个问题呢?
可能是IE与Firefox对于request header过长的请求会自动截断;而Chrome对此置之不理。
小结
这篇文章分享的内容是:当IIS返回"Bad Request - Request Too Long. HTTP Error 400. The size of the request headers is too long."的错误时,说明客户端发出的请求头长度超出了Http.sys的限制,这个限制是由注册
[C#] 纯文本查看 复制代码
表"HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\HTTP\Parameters"中的两个参数MaxFieldLength与MaxRequestBytes决定的,默认值是16384字节。


看完这个我想就是cookie的事呗,那就把COOKIE删掉不就行了,因此我就删COOKIE;在打开一个新浏览器,没问题了,如果的我路子真是对的,也不用那第麻烦了;
个人愚见,是否正确,仅供参考!
8a8fd385tc254c33ceac5&amp;690.jpg
找站长苏飞做网站、商城、CRM、小程序、App、爬虫相关、项目外包等点这里
发表于 2016-12-26 13:34:22 | 显示全部楼层
找站长苏飞做网站、商城、CRM、小程序、App、爬虫相关、项目外包等点这里
您需要登录后才可以回帖 登录 | 马上注册

本版积分规则

QQ|手机版|小黑屋|手机版|联系我们|关于我们|广告合作|苏飞论坛 ( 豫ICP备17001017号-1)

GMT+8, 2020-8-11 14:34

© 2014-2021

快速回复 返回顶部 返回列表