每当遇到http错误代码为400代表客户端发起的请求不契合服务器对请求的某些限制,或者请求自身存在一定的错误。
目前400错误经常出如今用户认证阶段,当一个用户附属于过多的域时,Kerbero认证阶段会将域信息发送给服务器,从而招致请求字段长度逾越服务器设置的上限。
最近登陆一个新网站时,键入用户名、密码后,其他电脑都能够进入界面,但有一台电脑呈现了下面的错误提示:
HTTPStatu400-Invaliddirectrefertoformloginpage
typStatureport
messagInvaliddirectrefertoformloginpage
descriptTherequestsentbytheclientwasyntactincorrectInvaliddirectrefertoformloginpage.
A pachTomcat/6.0.13
网上查了一下,可能是外地cooki隐私设置的问题。普通在上网阅读网站的时分第一次翻开完网页再翻开衔接以后就呈现 HTTP400-错误请求的问题。
处置的方法如下:
1.翻开internet选项
2.删除一切的cooki
3.点隐私把隐私级别设置到最高阻止一切的cookie
问题重现
1.更改注册表HKEY_LOCA L_MA CHINE\SYSTEM\CurrentControlSet\services\http\Parameters
MaxFieldLength=10hex
2.经过以下命令重起系统http服务 需求管理员权限)
Netstophttp
Netstarthttp
3.经过以下命令重起ii服务
IISRESET
4.经过阅读器访问服务器网页
5.调试方法
400错误发生自http级别,服务器端http.sy检测到任何与其配置不契合的请求会直接回复400错误给客户端,同时在C:\Windows\System32\LogFiles\HTTPERR\httperr.log文件中记载日志标明失败缘由。
Httperrorlog
#Software:MicrosoftHTTPAPI2.0
#Version:1.0
#Date:2012-09-0505:01:22
#Fields:dattimec-ipc-ports-ips-portcs-versioncs-methodcs-urisc-statuss-siteids-reasons-queuename
2012-09-0505:01:22::1%020567::1%080HTTP/1.1GET/400-FieldLength
也能够经过IEDevelopTool来追踪返回代码。
翻开IE,按F12翻开DevelopTool
network选项卡上点击StartCaptur按钮
阅读网页,检查返回码
处置计划
计划一
减少请求中发送的字段长度,使其契合服务器规则。假如该问题是由于该用户参加了过多域组,那就要从一些组中退出来以减少请求长度。
计划二
更改服务器设置,注册表中更改MaxFieldLength和MaxRequestByt设置的大小。
详细应该设为多大呢?
能够依据这个链接提供的方式计算token大小http://support.microsoft.com/kb/327825
然后把MaxFieldLength和MaxRequestByt大小设置为token大小的4/3
假如不想计算,能够装置一个fiddler客户端,清IEcach然后发送一个请求然后检查统计信息。一共发送了几字节能够经过以下方式来查看。
计划三
改用NTLM取代Kerbero认证方式,这样域组信息不会被发送,但是这要依据实践环境需求而定,假如需求用到Kerberodeleg功用,肯定不能改为NTLM另外Kerbero相对NTLM一种更为平安的认证方式,所以该计划在选择的时分要愈加谨慎。
这样阅读网页的时分就不会再呈现HTTP400-错误请求的问题了但是阅读某些需求cooki网站(如:论坛或需求登陆的站点)时分就无法登陆了所以在阅读完后记得要把隐私级别降低调回来,登陆站点以后保管cooki就能够了
本文链接:http://www.wlxin.com/wangzhanyouhua/514.html
|