TrueURL
TrueURL

菜单

HTTP 状态码大全

每个 HTTP 响应都以一个三位数的状态码开头,告诉客户端请求的处理结果。以下按类别列出各个状态码,用通俗易懂的语言解释其含义,附响应示例,并说明每个状态码对重定向和 SEO 的影响。

3xx 重定向

客户端需要进一步操作,通常是请求 Location 响应头中给出的 URL。重定向链正是由这类状态码组成的。

4xx 客户端错误

请求无法按原样完成:页面不存在、访问被拒绝,或者客户端发送的请求过多。

5xx 服务器错误

请求看似有效,服务器却未能完成处理。持续出现的 5xx 错误会把访客和爬虫一并挡在门外。

如何解读 HTTP 状态码

第一位数字表示响应的类别,后两位数字表示该类别下的具体含义。如果客户端不认识某个状态码,就会把它当作同类别的 x00 状态码处理,因此未知的 4xx 状态码会按 400 Bad Request 处理。

数字后面的原因短语(reason phrase),例如 Not Found 或 Moved Permanently,只是写给人看的说明。客户端只根据数字做出处理,而 HTTP/2 和 HTTP/3 根本不发送原因短语。

重定向状态码一览

  • 301 Moved Permanently:永久重定向;浏览器可能会把 POST 改为 GET。迁移页面时的默认选择。
  • 302 Found:临时重定向;请求方法可能会改变。许多框架默认使用它。
  • 303 See Other:临时重定向;始终改用 GET 跟随。常用于表单提交之后。
  • 307 Temporary Redirect:临时重定向;保留原请求方法和请求体。
  • 308 Permanent Redirect:永久重定向;保留原请求方法和请求体。
  • 304 Not Modified:并不是重定向到另一个 URL,而是告诉客户端它缓存的副本仍然有效。

阅读 HTTP 重定向状态码详解,了解每种状态码分别适用于什么场景。

重定向链中的状态码

重定向链由一系列 3xx 响应组成,并以一个最终响应结束。访客或爬虫实际得到的只有最后一个状态码,因此以 404 结尾的重定向链就是一个失效链接,无论它之前的重定向看起来多么规范。使用 URL 重定向检测工具可以查看每一跳的状态码,使用批量重定向检测则可以一次检测多个 URL。

URL 重定向检测

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