Http 400错误重现实验及解决办法 您所在的位置:网站首页 400错误的解决方法 Http 400错误重现实验及解决办法

Http 400错误重现实验及解决办法

2022-03-23 21:56| 来源: 网络整理| 查看: 265

阅读更多 问题简介

每当遇到http错误代码为400,代表客户端发起的请求不符合服务器对请求的某些限制,或者请求本身存在一定的错误。

目前400错误经常出现在用户认证阶段,当一个用户从属于过多的域时,在Kerberos认证阶段会将域信息发送给服务器,从而导致请求字段长度超过服务器设置的上限。

问题重现 更改注册表HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\http\Parameters MaxFieldLength = 10 (hex) 通过以下命令重起系统http服务 (需要管理员权限) Net stop http Net start http 通过以下命令重起iis服务 IISRESET 通过浏览器访问服务器网页

调试方法

400错误产生自http级别,服务器端http.sys检测到任何与其配置不符合的请求会直接回复400错误给客户端,同时在C:\Windows\System32\LogFiles\HTTPERR\httperr.log文件中记录日志表明失败原因。

Http error log

#Software:Microsoft HTTP API 2.0

#Version:1.0

#Date:2012-09-05 05:01:22

#Fields:date time c-ip c-port s-ip s-port cs-version cs-method cs-uri sc-statuss-siteid s-reason s-queuename

2012-09-0505:01:22 ::1%0 20567 ::1%0 80 HTTP/1.1 GET / 400 - FieldLength

也可以通过IE Developer Tool来追踪返回代码。

打开IE, 按F12打开Developer Tool

在network选项卡上点击StartCapture按钮

浏览网页,查看返回码

解决方案 方案一

减少请求中发送的字段长度,使其符合服务器规定。如果该问题是因为该用户加入了过多域组,那就要从一些组中退出来以减少请求长度。

方案二

更改服务器设置,在注册表中更改MaxFieldLength和MaxRequestBytes设置的大小。

具体应该设为多大呢?

可以根据这个链接提供的方式计算token的大小http://support.microsoft.com/kb/327825

然后把MaxFieldLength和MaxRequestBytes的大小设置为token大小的4/3。

如果不想计算,可以安装一个fiddler在客户端,清IE cache,然后发送一个请求然后查看统计信息。一共发送了多少字节可以通过以下方式来查看。

方案三

改用NTLM取代Kerberos认证方式,这样域组信息不会被发送,但是这要根据实际环境需求而定,如果需要用到Kerberos delegation功能,肯定不能改为NTLM。另外Kerberos相对NTLM是一种更为安全的认证方式,所以该方案在选择的时候要更加慎重。

下面这个链接有对http.sys中相应的注册表项的详细介绍,可以通过它来查看windows可以通过那些配置来控制http协议层的行为。

Http.sysregistrysettingsforIIS

http://support.microsoft.com/kb/820129/en-us

参考文档

http://support.microsoft.com/kb/2020943

http://support.microsoft.com/kb/820129/en-us

http://support.microsoft.com/kb/327825

分享到: Windows异常分发 - First Chance Exceptio ... | 11级_Java_曹建波 09.26 注解 2012-09-26 22:44 浏览 869 评论(0) 查看更多 评论 发表评论

您还没有登录,请您登录后再发表评论



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有