TrueURL
TrueURL

菜单

431 请求头字段过大

服务器因请求头过大而拒绝请求,通常是因为浏览器发送的 Cookie 过多或过大。

原因短语
Request Header Fields Too Large
是否重定向
否
默认可缓存
否

431 Request Header Fields Too Large(RFC 6585)表示服务器因为某个请求头字段过大,或所有请求头字段加起来过大,而不愿处理该请求。客户端可以减小请求头的大小后重试。

罪魁祸首通常是 Cookie:一个网站及其子域名设置的 Cookie 越来越多,直到 Cookie 请求头超出服务器的限制。很长的 Referer URL 和较大的身份验证令牌也会导致这个问题。例如,Node.js 在请求头超出限制时会返回 431,开发者经常在 localhost 上遇到这种情况,因为许多本地项目的 Cookie 都堆积在那里。

并非所有服务器都使用 431。例如,nginx 会改为返回带有“Request Header Or Cookie Too Large”提示的 400 Bad Request。

响应示例

HTTP
HTTP/1.1 431 Request Header Fields Too Large
Connection: close

SEO 与重定向检测

爬虫发送的请求头很小,也不带 Cookie,因此几乎不会触发 431。如果重定向检测返回 431,应减小所添加的自定义请求头或 Cookie 的大小。

常见原因与使用场景

  • 某个域名及其子域名的 Cookie 越积越多。清除这些 Cookie,或者减少 Cookie 的数量和大小。
  • 较大的 JWT 或其他授权请求头。
  • 来自带有超长查询字符串的 URL 的超长 Referer 请求头。
  • Node.js 服务器(--max-http-header-size)、代理或负载均衡器的请求头大小限制过低。

URL 重定向检测

使用免费的 TrueURL 重定向检测工具,逐跳查看一个 URL 返回的每一个状态码。