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