Apache中Cookie長度的設置

起因
今天在調試Ucenter的同步登陸和同步登出的過程中,瀏覽器突然出現以下錯誤提示:
Your browser sent a request that this server could not understand.
Size of a request header field exceeds server limit.

開始是以爲P3P協議設置cookie的問題,查閱了P3P的文檔,沒有相關的條目。經過不懈的搜索,終於發現原來是Apache中資源使用限制的設置問題。

技術背景
Apache中“資源使用限制”就是要限制用戶對網站特定資源(如目錄、服務器硬件等)的訪問。相關指令包括:LimitRequestBody、LimitRequestFields、LimitRequestFieldSize、LimitRequestLine、RLimitCPU、RLimitMEM、RLimitNPROC和ThreadStackSize。LimitRequest*系列指令用來限制Apache在讀取客戶端請求的過程中使用的資源數量。通過限制這些值,可以減輕某些拒絕服務(DOS)攻擊;RLimit*系列指令限制被Apache子進程所派生的進程使用的資源數量,通常這些指令用來控制CGI腳本和SSI exec命令所使用的資源;ThreadStackSize指令在某些平臺上用來控制堆棧大小。

LimitRequestLine
LimitRequestLine指令用來限制接收客戶端發送的HTTP請求行的字節數,允許服務器管理員增加或減少客戶端HTTP請求行允許大小的限制。因爲請求行包括HTTP方法、URI、協議版本,所以LimitRequestLine指令會限制請求URI的長度。服務器會需要這個值足夠大以裝載它所有的資源名,包括可能在GET請求中所傳遞的查詢部分的所有信息。

LimitRequestFieldSize
LimitRequestFieldSize指令用來限制客戶端發送的請求頭的字節數,允許服務器管理員增加,或減少HTTP請求頭域大小的限制。一般來說,服務器需要此值足夠大,以適應普通客戶端的任何請求的頭域大小。一個普通頭域的大小對於不同的客戶端來說是有很大差別的,一般與用戶配置他們的瀏覽器以支持更多的內容協議密切相關。

LimitRequestLine和LimitRequestFieldSize指令給了服務器管理員更大的可控性,以控制客戶端不正常的請求行爲。這有助於避免某些形式的拒絕服務攻擊。默認值爲“8190”。

解決
在Apache的httpd.conf配置文件中
LimitRequestLine 40940
LimitRequestFieldSize 40940
問題解決。

或者清除下本機中本域的Cookie也行


via:http://www.ccvita.com/316.html


---------------------------------

<VirtualHost *>

.....

 LimitRequestLine 8190
LimitRequestFieldSize 8190

</VirtualHost>


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章