每當(dāng)遇到http錯(cuò)誤代碼為400代表客戶端發(fā)起的請(qǐng)求不契合服務(wù)器對(duì)請(qǐng)求的某些限制,或者請(qǐng)求自身存在一定的錯(cuò)誤。
目前400錯(cuò)誤經(jīng)常出如今用戶認(rèn)證階段,當(dāng)一個(gè)用戶附屬于過(guò)多的域時(shí),Kerbero認(rèn)證階段會(huì)將域信息發(fā)送給服務(wù)器,從而招致請(qǐng)求字段長(zhǎng)度逾越服務(wù)器設(shè)置的上限。
最近登陸一個(gè)新網(wǎng)站時(shí),鍵入用戶名、密碼后,其他電腦都能夠進(jìn)入界面,但有一臺(tái)電腦呈現(xiàn)了下面的錯(cuò)誤提示:
HTTPStatu400-Invaliddirectrefertoformloginpage
typStatureport
messagInvaliddirectrefertoformloginpage
descriptTherequestsentbytheclientwasyntactincorrectInvaliddirectrefertoformloginpage.
A pachTomcat/6.0.13
網(wǎng)上查了一下,可能是外地cooki隱私設(shè)置的問(wèn)題。普通在上網(wǎng)閱讀網(wǎng)站的時(shí)分第一次翻開(kāi)完網(wǎng)頁(yè)再翻開(kāi)銜接以后就呈現(xiàn) HTTP400-錯(cuò)誤請(qǐng)求的問(wèn)題。
處置的方法如下:
1.翻開(kāi)internet選項(xiàng)
2.刪除一切的cooki
3.點(diǎn)隱私把隱私級(jí)別設(shè)置到最高阻止一切的cookie
問(wèn)題重現(xiàn)
1.更改注冊(cè)表HKEY_LOCA L_MA CHINE\SYSTEM\CurrentControlSet\services\http\Parameters
MaxFieldLength=10hex
2.經(jīng)過(guò)以下命令重起系統(tǒng)http服務(wù) 需求管理員權(quán)限)
Netstophttp
Netstarthttp
3.經(jīng)過(guò)以下命令重起ii服務(wù)
IISRESET
4.經(jīng)過(guò)閱讀器訪問(wèn)服務(wù)器網(wǎng)頁(yè)
5.調(diào)試方法
400錯(cuò)誤發(fā)生自http級(jí)別,服務(wù)器端http.sy檢測(cè)到任何與其配置不契合的請(qǐng)求會(huì)直接回復(fù)400錯(cuò)誤給客戶端,同時(shí)在C:\Windows\System32\LogFiles\HTTPERR\httperr.log文件中記載日志標(biāo)明失敗緣由。
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
也能夠經(jīng)過(guò)IEDevelopTool來(lái)追蹤返回代碼。
翻開(kāi)IE,按F12翻開(kāi)DevelopTool
network選項(xiàng)卡上點(diǎn)擊StartCaptur按鈕
閱讀網(wǎng)頁(yè),檢查返回碼
處置計(jì)劃
計(jì)劃一
減少請(qǐng)求中發(fā)送的字段長(zhǎng)度,使其契合服務(wù)器規(guī)則。假如該問(wèn)題是由于該用戶參加了過(guò)多域組,那就要從一些組中退出來(lái)以減少請(qǐng)求長(zhǎng)度。
計(jì)劃二
更改服務(wù)器設(shè)置,注冊(cè)表中更改MaxFieldLength和MaxRequestByt設(shè)置的大小。
詳細(xì)應(yīng)該設(shè)為多大呢?
能夠依據(jù)這個(gè)鏈接提供的方式計(jì)算token大小http://support.microsoft.com/kb/327825
然后把MaxFieldLength和MaxRequestByt大小設(shè)置為token大小的4/3
假如不想計(jì)算,能夠裝置一個(gè)fiddler客戶端,清IEcach然后發(fā)送一個(gè)請(qǐng)求然后檢查統(tǒng)計(jì)信息。一共發(fā)送了幾字節(jié)能夠經(jīng)過(guò)以下方式來(lái)查看。
計(jì)劃三
改用NTLM取代Kerbero認(rèn)證方式,這樣域組信息不會(huì)被發(fā)送,但是這要依據(jù)實(shí)踐環(huán)境需求而定,假如需求用到Kerberodeleg功用,肯定不能改為NTLM另外Kerbero相對(duì)NTLM一種更為平安的認(rèn)證方式,所以該計(jì)劃在選擇的時(shí)分要愈加謹(jǐn)慎。
這樣閱讀網(wǎng)頁(yè)的時(shí)分就不會(huì)再呈現(xiàn)HTTP400-錯(cuò)誤請(qǐng)求的問(wèn)題了但是閱讀某些需求cooki網(wǎng)站(如:論壇或需求登陸的站點(diǎn))時(shí)分就無(wú)法登陸了所以在閱讀完后記得要把隱私級(jí)別降低調(diào)回來(lái),登陸站點(diǎn)以后保管cooki就能夠了
本文鏈接:http://m.5thwavemovie.net/wangzhanyouhua/514.html
|