431 Request Header Fields Too Large(RFC 6585)表示由於單一標頭欄位或所有標頭欄位加總過大,伺服器不願處理這個要求。用戶端可以縮減標頭的大小後重試。
罪魁禍首通常是 Cookie:網站及其子網域設定的 Cookie 越來越多,直到 Cookie 標頭超過伺服器的上限。過長的 Referer 網址和大型的驗證權杖也可能造成這個問題。例如 Node.js 在標頭超過上限時會回應 431,開發人員常在 localhost 上遇到,因為那裡累積了許多本機專案的 Cookie。
並非所有伺服器都使用 431。例如 nginx 會改為回傳 400 Bad Request,並附上「Request Header Or Cookie Too Large」。
回應範例
HTTP
HTTP/1.1 431 Request Header Fields Too Large
Connection: close SEO 與重新導向檢查
爬蟲送出的標頭很小,也不帶 Cookie,因此幾乎不會觸發 431。如果重新導向檢查回傳 431,請縮減您加入的自訂標頭或 Cookie 的大小。
常見原因與使用情境
- 網域及其子網域累積了大量 Cookie。請清除這些 Cookie,或減少 Cookie 的數量與大小。
- 大型的 JWT 或其他授權標頭。
- 來自帶有超長查詢字串網址的過長
Referer標頭。 - Node.js 伺服器(
--max-http-header-size)、代理伺服器或負載平衡器的標頭大小上限過低。