400 Bad Request 是通用的客户端错误。服务器认为请求存在某种问题而拒绝处理:语法格式错误、消息帧无效、欺骗性的请求路由、错误的 Host 请求头、无效的查询参数,或者无法解析的请求体。客户端不应原封不动地重复该请求。
许多服务器会对本来有更具体状态码的问题使用 400。例如,当请求头超出缓冲区大小时,nginx 会返回“400 Bad Request: Request Header Or Cookie Too Large”,而 431 会更准确;许多 API 也会对验证错误返回 400,而这些错误本可以使用 422。
要找到真正的原因,通常最好查看响应体。
响应示例
HTTP
HTTP/1.1 400 Bad Request
Date: Fri, 06 Nov 2026 10:15:32 GMT
Server: nginx
Content-Type: text/html
Content-Length: 217
Connection: close
<html>
<head><title>400 Request Header Or Cookie Too Large</title></head>
<body>
<center><h1>400 Bad Request</h1></center>
<center>Request Header Or Cookie Too Large</center>
<hr><center>nginx</center>
</body>
</html> SEO 与重定向检测
搜索引擎对 400 的处理与其他 4xx 错误相同:该 URL 不会被编入索引,已编入索引的 URL 如果开始返回 400,就会被移除。爬虫发送的是小而标准的请求,不带 Cookie,因此只有爬虫才遇到的 400 通常源于 URL 中的特殊字符或防火墙规则。在重定向检测中,如果重定向链中间出现 400,往往说明某次重定向生成了格式错误的 URL,例如字符被重复编码或查询字符串损坏。
常见原因与使用场景
- Cookie 过多或过大。清除该网站的 Cookie,或在 nginx 中调大
large_client_header_buffers。 - URL 格式错误,例如空格未编码、百分号编码损坏,或
Host请求头无效。 - API 请求中的 JSON 无效,或缺少必需参数。
- 向 HTTPS 端口发送了普通 HTTP 请求,nginx 会报告“The plain HTTP request was sent to HTTPS port”。