Apache中Cookie長度的設定

日期:1970-01-01  作者:喜騰小二  來源:PHPChina


今天在偵錯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也行。

<<<返回技術中心

技術文章

站內新聞

我要啦免费统计