HTTP 状态码的完整指南和列表

已发表: 2020-02-24

HTTP 状态代码就像来自服务器的简短注释,被添加到网页上。 它们实际上并不是网站内容的一部分。 相反,它们是来自服务器的消息,让您知道当它收到查看某个页面的请求时情况如何。

每次您的浏览器与服务器交互时都会返回这些类型的消息,即使您没有看到它们。 如果您是网站所有者或开发人员,了解HT TP 状态代码至关重要。 当它们出现时,HTTP 状态代码是诊断和修复网站配置错误的宝贵工具。

本文介绍了几个服务器状态和错误代码,并解释了它们揭示的服务器幕后发生的事情。

让我们潜入吧!

喜欢看视频版?

什么是 HTTP 状态码?

每次您单击链接或输入 URL 并按Enter时,您的浏览器都会向您尝试访问的站点的网络服务器发送一个请求。 服务器接收并处理请求,然后将相关资源连同 HTTP 标头一起发回。

HTTP 状态代码在 HTTP 标头中传送到您的浏览器。 虽然每次浏览器请求网页或资源时都会返回状态代码,但大多数情况下您看不到它们。

通常只有在出现问题时,您才会在浏览器中看到一个显示。 这是服务器的说法:“有什么不对劲。 这是一个解释出了什么问题的代码。”

google 404 http status codes
谷歌 404 HTTP 状态码

如果您想查看浏览器通常不会显示的状态代码,有许多不同的工具可以让您轻松查看。 浏览器扩展可用于对开发人员友好的平台,例如 Chrome 和 Firefox,并且有许多基于 Web 的标头获取工具,例如 Web Sniffer。

要使用这些工具之一查看 HTTP 状态代码,请查找报告顶部附近显示“状态:HTTP/1.1”的行。 后面是服务器返回的状态码。

了解 HTTP 状态代码类

HTTP 状态码分为 5 个“类”。 这些是具有相似或相关含义的响应分组。 了解它们是什么可以帮助您在查找其具体含义之前快速确定状态代码的一般内容。

五类包括:

  • 100s:表示浏览器发起的请求正在继续的信息代码。
  • 200s:服务器接收、理解和处理浏览器请求时返回的成功码。
  • 300s:当新资源被请求的资源替换时返回的重定向代码。
  • 400s:客户端错误代码,表示请求有问题。
  • 500s:服务器错误代码表示请求已被接受,但服务器上的错误阻止了请求的实现。

在这些类中的每一个中,都存在各种服务器代码,并且可能由服务器返回。 每个单独的代码都有特定和独特的含义,我们将在下面更全面的列表中介绍。

为什么 HTTP 状态代码和错误对搜索引擎优化 (SEO) 很重要

搜索引擎机器人在抓取您的网站时会看到 HTTP 状态代码。 在某些情况下,这些消息会影响您的网页是否以及如何被编入索引,以及搜索引擎如何看待您网站的健康状况。

一般来说,100 级和 200 级 HTTP 状态码不会对您的 SEO 产生太大影响。 它们表明您网站上的一切都在正常运行,并使搜索引擎机器人能够继续前进。 但是,它们也不会提高您的排名。

在大多数情况下,对 SEO 重要的是更高级别的代码。 400 级和 500 级响应可以防止机器人抓取和索引您的页面。 这些错误太多也可能表明您的网站质量不高,可能会降低您的排名。

300 级代码与 SEO 的关系稍微复杂一些。 要了解它们的影响,您需要了解的主要内容是永久重定向和临时重定向之间的区别,我们将在下面的相关部分中更详细地介绍。

然而,简而言之,永久重定向从反向链接共享链接权益,但临时重定向不共享。 换句话说,当您对已移动的页面使用临时重定向时,您将失去已完成的所有链接构建的 SEO 优势。

在 Google Search Console 中检查 HTTP 状态代码

监控 Google 如何感知您网站上的 HTTP 状态代码的一种方法是使用 Google Search Console。 您可以在Coverage报告中查看 300、400 和 500 级别的状态代码:

搜索控制台覆盖率
Google Search Console 的覆盖率报告

仪表板的此区域显示您网站上的四种类型的内容:

  • 返回错误的页面。
  • 有警告的有效页面。
  • 有效的资源。
  • 从索引中排除的内容。

您可能会在ExcludedErrorValid with warnings部分下找到具有 300、400 和 500 级 HTTP 状态代码的页面,具体取决于代码的类型。 例如,301 重定向可能会在Excluded as Page with redirect下列出:

搜索控制台重定向
在 Google Search Console 的覆盖率报告中包含重定向的页面。

400 级和 500 级状态代码可能会出现在Error下。

查看 HTTP 状态代码的另一种方法是使用URL 检查工具。 如果 Google 由于错误而无法将特定页面编入索引,您会在此处看到:

搜索控制台 404
Google Search Console 的 URL 检查工具中出现 404 错误

有关使用 Google Search Console 的更多提示,请查看我们的平台综合指南。

HTTP 状态码的完整指南和列表

虽然有超过 40 种不同的服务器状态代码,但您经常会遇到不到十几个。 下面,我们介绍了更常见的代码,以及一些您可能仍会遇到的更晦涩的代码。

被 HTTP 状态码难住了? 我们的 WordPress 专家随时待命。 免费试用 Kinsta。

100 个状态码

一个 100 级的状态代码告诉您,您向服务器发出的请求由于某种原因仍在进行中。 这不一定是问题,它只是让您知道发生了什么的额外信息。

  • 100: “继续。” 这意味着有问题的服务器已收到您浏览器的请求标头,并且现在已准备好发送请求正文。 这使得请求过程更加高效,因为它可以防止浏览器发送正文请求,即使标头已被拒绝。
  • 101: “交换协议。” 您的浏览器已要求服务器更改协议,并且服务器已遵守。
  • 103: “早期提示。” 这会在服务器响应的其余部分准备好之前返回一些响应标头。

200 个状态码

这是接收的最好的 HTTP 状态码。 200 级响应意味着一切都按应有的方式工作。

  • 200: “一切都好。” 这是当网页或资源完全按照预期方式运行时交付的代码。
  • 201: “创建。” 服务器完成了浏览器的请求,因此创建了一个新资源。
  • 202: “接受。” 服务器已接受浏览器的请求,但仍在处理中。 该请求最终可能会或可能不会导致完整的响应。
  • 203: “非权威信息。” 使用代理时可能会出现此状态代码。 这意味着代理服务器从源服务器收到了 200“一切正常”状态代码,但在将响应传递给浏览器之前已对其进行了修改。
  • 204: “没有内容。” 此代码表示服务器已成功处理请求,但不会返回任何内容。
  • 205: “重置内容。” 与 204 代码一样,这意味着服务器如何处理请求但不会返回任何内容。 但是,它还要求您的浏览器重置文档视图。
  • 206: “部分内容。” 如果您的 HTTP 客户端(也称为浏览器)使用“范围标头”,您可能会看到此状态代码。 这使您的浏览器能够恢复暂停的下载,以及将下载拆分为多个流。 当范围标头导致服务器仅发送所请求资源的一部分时,将发送 206 代码。

300 个状态码

重定向是用于传达资源已移动到新位置的过程。 有几个伴随重定向的 HTTP 状态代码,以便向访问者提供有关在哪里可以找到他们正在寻找的内容的信息。

  • 300: “多项选择。” 有时,服务器可能会响应多种可能的资源来满足浏览器的请求。 300 状态码意味着您的浏览器现在需要在它们之间进行选择。 当有多个可用的文件类型扩展名或服务器遇到词义消歧时,可能会发生这种情况。
  • 301: “请求的资源已被永久移动。” 当网页或资源被永久替换为不同的资源时,将提供此代码。 它用于永久 URL 重定向。
  • 302: “请求的资源已移动,但已找到。” 此代码用于指示找到了请求的资源,只是不在预期的位置。 它用于临时 URL 重定向。
  • 303: “见其他。” 了解 303 状态码需要您知道四种主要 HTTP 请求方法之间的区别。 本质上,303 代码告诉您的浏览器它找到了您的浏览器通过 POST、PUT 或 DELETE 请求的资源。 但是,要使用 GET 检索它,您需要向与以前使用的 URL 不同的 URL 发出适当的请求。
  • 304: “请求的资源自你上次访问以来没有被修改过。” 这段代码告诉浏览器存储在浏览器缓存中的资源没有改变。 它用于通过重用以前下载的资源来加速网页交付。
  • 307: “临时重定向。” 当资源被临时移动到不同的 URL 时,此状态代码已取代 302“找到”作为适当的操作。 与 302 状态码不同,它不允许更改 HTTP 方法。
  • 308: “永久重定向。” 308 状态代码是 301“永久移动”代码的继承者。 它不允许更改 HTTP 方法,并指示请求的资源现在永久位于新 URL。

400 个状态码

在 400 级别,HTTP 状态代码开始出现问题。 这些是错误代码,表明您的浏览器和/或请求存在故障。

  • 400: “错误请求。” 由于客户端出错,服务器无法返回响应。 请参阅我们的指南以解决此错误。
  • 401: “未经授权”或“需要授权”。 当目标资源缺少有效的身份验证凭据时,服务器会返回此信息。 如果您使用 htpasswd 设置了基本的 HTTP 身份验证,您可能会看到这一点。
Chrome中的Nginx 401授权需要错误
Chrome中的Nginx 401授权需要错误
  • 402: “需要付款。” 最初,此代码是为用作数字现金系统的一部分而创建的。 然而,该计划从未实施。 相反,它被各种平台用来表示无法满足请求,通常是由于缺乏所需的资金。 常见的例子包括:
    • 您已达到对 Google Developers API 的每日请求限制。
    • 您尚未支付 Shopify 费用,并且您的商店已被暂时停用。
    • 您通过 Stripe 的付款失败,或者 Stripe 正试图阻止欺诈性付款。
  • 403: “禁止访问该资源。” 当用户尝试访问他们无权查看的内容时,将返回此代码。 例如,尝试在不登录的情况下访问受密码保护的内容可能会产生 403 错误。
  • 404: “未找到请求的资源。” 这是它们中最常见的错误消息。 这段代码意味着请求的资源不存在,服务器不知道它是否曾经存在过。
  • 405: “方法不允许。” 这是在托管服务器(源服务器)支持接收到的方法时生成的,但目标资源不支持。
  • 406: “不可接受的响应。” 根据请求中发送的接受标头,请求的资源只能生成不可接受的内容。
  • 407: “需要代理身份验证。” 代理服务器正在使用中,需要您的浏览器在继续之前对其进行身份验证。
  • 408: “服务器在等待来自浏览器的其余请求时超时。” 当服务器在等待来自浏览器的完整请求时超时时会生成此代码。 换句话说,服务器没有收到浏览器发送的完整请求。 一种可能的原因可能是网络拥塞导致浏览器和服务器之间的数据包丢失。
  • 409: “冲突。” 409 状态码表示服务器无法处理浏览器的请求,因为与相关资源存在冲突。 这有时是由于多个同时编辑而发生的。
  • 410: “请求的资源已经消失,不会再回来了。” 这类似于 404“未找到”代码,除了 410 表示该情况是预期的并且是永久性的。
  • 411: “需要长度。” 这意味着请求的资源需要客户端指定一定的长度,而它没有。
  • 412: “前提条件失败。” 您的浏览器在其请求标头中包含某些条件,而服务器不符合这些规范。
  • 413: “有效负载太大”或“请求实体太大”。 您的请求比服务器愿意或能够处理的要大。
  • 414: “URI 太长。” 这通常是 GET 请求的结果,该请求已被编码为查询字符串,该查询字符串太大而服务器无法处理。
  • 415: “不支持的媒体类型。” 请求包含服务器或资源不支持的媒体类型。
  • 416: “范围不满足。” 您的请求是针对服务器无法返回的资源的一部分。
  • 417: “期待失败。” 服务器无法满足请求的期望头字段中指定的要求。
  • 418: “我是个茶壶。” 此代码由接收冲泡咖啡请求的茶壶返回。 这也是 1998 年的愚人节笑话。
我是一个茶壶 http 状态码
418“我是茶壶”状态码
  • 422: “无法处理的实体。” 客户端请求包含语义错误,服务器无法处理。
  • 425: “太早了。” 当服务器不愿意处理请求时发送此代码,因为它可能会被重放。
  • 426: “需要升级。” 由于请求的升级头字段的内容,客户端应该切换到不同的协议。
  • 428: “需要先决条件。” 服务器需要在处理请求之前指定条件。
  • 429: “请求太多。” 当用户在给定的时间内发送了太多请求(速率限制)时,这是由服务器生成的。 这有时可能是由于机器人或脚本试图访问您的站点而发生的。 在这种情况下,您可能想尝试更改您的 WordPress 登录 URL。 您还可以查看我们的修复 429“请求过多”错误的指南。
429 请求过多
429 请求过多
  • 431: “请求标头字段太大。” 服务器无法处理请求,因为标头字段太大。 这可能表明单个标头字段或所有标头字段存在问题。
  • 451: “因法律原因不可用。” 服务器的运营商收到了禁止访问您请求的资源(或一组资源,包括您请求的资源)的要求。 有趣的事实:此代码是对 Ray Bradbury 的小说Fahrenheit 451的引用
  • 499: “客户端关闭请求。” 当 Nginx 仍在处理请求时,当客户端关闭请求时,NGINX 会返回此信息。

被 HTTP 状态码难住了? 我们的 WordPress 专家随时待命。 免费试用 Kinsta。

500 个状态码

500 级状态代码也被视为错误。 但是,它们表示问题出在服务器端。 这会使它们更难解决。

  • 500: “服务器出错,请求无法完成。” 这是通用代码,仅表示“内部服务器错误”。 服务器出现问题,请求的资源未交付。 此代码通常由第三方插件、错误的 PHP 甚至与数据库的连接中断生成。 查看我们的教程,了解如何修复建立数据库连接的错误以及解决 500 内部服务器错误的其他方法。
建立数据库连接时出错
建立数据库连接时出错
  • 501: “未实施。” 此错误表明服务器不支持满足请求所需的功能。 这几乎总是网络服务器本身的问题,通常必须由主机解决。 查看我们关于如何解决 501 未实施错误的建议。
  • 502: “网关错误。” 此错误代码通常意味着一台服务器从另一台服务器收到了无效响应,例如在使用代理服务器时。 其他时候查询或请求将花费太长时间,因此它被服务器取消或终止,并且与数据库的连接中断。 有关更多详细信息,请参阅我们关于如何修复 502 Bad Gateway 错误的深入教程。
  • 503: “服务器现在无法处理这个请求。” 请求无法在此时完成。 此代码可能由无法处理其他请求的过载服务器返回。 我们有关于如何修复 503 服务不可用错误的完整指南。
  • 504: “作为网关的服务器等待另一台服务器响应超时。” 这是当有两台服务器参与处理请求时返回的代码,并且第一台服务器超时等待第二台服务器响应。 您可以在我们的专用指南中阅读有关如何修复 504 错误的更多信息。
  • 505: “不支持 HTTP 版本。” 服务器不支持客户端用于发出请求的 HTTP 版本。
  • 508 : “ Resource Limit Is Reached” 已达到您的虚拟主机设置的资源限制。 查看我们的教程,了解如何解决“已达到 508 资源限制”错误。
  • 511: “需要网络身份验证。” 当您尝试使用的网络在将您的请求发送到服务器之前需要某种形式的身份验证时,将发送此状态代码。 例如,您可能需要同意公共 Wi-Fi 热点的条款和条件。
  • 521: “Web 服务器已关闭。” 错误 521 是 Cloudflare 特定的错误消息。 这意味着您的 Web 浏览器能够成功连接到 Cloudflare,但 Cloudflare 无法连接到源 Web 服务器。
  • 525 :“SSL 握手失败”。 错误 525 表示使用 Cloudflare 的域与源 Web 服务器之间的 SSL 握手失败。 如果您遇到问题,有五种方法可以尝试轻松修复错误 525。

在哪里可以了解有关 HTTP 状态代码的更多信息

除了我们在此列表中介绍的 HTTP 状态代码之外,您可能还想了解一些更晦涩的状态代码。 您可以参考多种资源来阅读这些稀有代码,包括:

  • 来自 Wikipedia 的 HTTP 状态代码的完整列表。
  • 来自 Internet 工程任务组 (IETF) 的状态代码定义。
  • RFC 7231。

了解这些状态代码可以帮助您解决一些独特的问题,同时维护您自己的网站,甚至在您在其他网站上遇到这些问题时。

起初它们可能看起来很吓人,但 HTTP 状态代码对于了解您网站上发生的事情很重要。 这是您应该熟悉的内容的完整列表! 点击推文

概括

虽然它们表面上看起来令人困惑或令人生畏,但 HTTP 状态代码实际上是非常有用的。 通过学习一些常见的问题,您可以更快地解决您网站上的问题。

在这篇文章中,我们定义了 40 多个您可能会遇到的 HTTP 状态代码。 从较温和的 100 级和 200 级代码到更复杂的 400 级和 500 级错误,理解这些消息对于维护您的网站并确保用户可以访问至关重要。