HTTP 状态码2025年3月17日 | 阅读 14 分钟 HTTP 状态码决定了客户端发出的请求是否成功完成。服务器的状态码是响应客户端请求的。简而言之,我们可以说,当客户端发出请求时,服务器发送的 HTTP 状态码允许客户端知道请求是成功、失败还是介于两者之间。 让我们详细了解一下 HTTP 状态码. 当浏览器向服务器发送请求时,服务器会以一个三位数的 HTTP 状态码进行响应。 ![]() 状态码分为五类。HTTP 状态码的第一个数字定义了这五类中的一类,而最后两位数字没有分类作用。IANA(互联网号码分配局)是负责维护 HTTP 状态码官方注册表的组织。以下是 IANA 标准定义的五类:
100 系列是信息性请求,200 系列是成功请求,300 系列用于重定向,400 系列用于客户端错误,500 系列用于服务器错误。 1xx 信息性响应以**一个**开头的代码会在连接仍在进行时提供一些信息。此类状态码表示请求已收到,并且处理已开始。信息性响应用于告知客户端请求处理已开始,并等待最终响应。响应仅包含状态行和可选的头部字段。它以空行终止。 100 Continue 100 continue 是一个信息性状态响应码,表示到目前为止一切正常,客户端应继续发送请求正文。如果请求已完成,则忽略此状态码。 客户端应在初始请求中以**Expect: 100- continue** 的头部发送,以便服务器可以检查请求的头部,客户端将在发送请求正文之前收到**100 continue HTTP 状态码**的响应。 100 Switching Protocols 客户端已请求服务器切换协议。服务器发送 100 switching protocol 作为响应码,告知客户端它正在根据客户端的请求切换到该协议,该客户端发送了包含 upgrade 请求头部的消息。简而言之,我们可以说服务器响应了 upgrade 请求头部。 102 Processing 102 processing 状态码由服务器发送,以告知客户端它已接受完整请求并正在处理请求,但目前仍无可用响应。 2xx Success2xx 类表示客户端发出的请求已被接收、理解和接受。或者我们可以说 2xx http 状态码代表 Http 请求成功。 200 OK 每当服务器作为响应返回 200 OK 状态码给客户端发出的请求时,表示该请求已被接受并成功。实际的 200 OK 响应可能取决于 HTTP 请求方法。以下方法可以发送在 HTTP 请求头部中: GET 方法:Get() 方法用于当我们想从服务器获取某些东西时。例如,我们从服务器请求某些资源,那么请求的资源将发送在响应正文中。 HEAD 方法:head() 方法仅在我们请求头部时使用。请求资源的实体头部字段将在响应正文中发送,而没有消息。 POST 方法:如果我们向服务器发送 post() 方法,我们正在请求一些新资源。描述操作结果的实体在消息正文中传输。 201 Created 当服务器作为响应返回 201 created 作为响应码时,表示客户端向服务器创建新资源的请求已成功。服务器在头部字段中返回有关新创建资源位置的信息。简而言之,我们可以说 201 Created 响应用于在新创建资源的 Location 头部字段中提供 URI。 202 Accepted 服务器发送 202 accepted 作为响应,以告知客户端我们已接受请求,并将稍后处理该请求。当需要大量的计算处理或请求需要在不久的将来处理时,会使用此响应。例如,客户端向服务器发送一个 NEFT 请求,其中 NEFT 用于将资金从一个账户转移到另一个银行的另一个账户。NEFT 请求每天处理三次,即早上一次,下午一次,晚上一次。在这种情况下,会发送 202 accepted 响应,表示您的转账请求已被接受,但我会稍后处理。 203 Non-Authoritative Information 服务器使用另一个响应码,即 203 Non-Authoritative Information,告知客户端代理服务器位于客户端和服务器之间。代理服务器可能会更改头部信息,也可能不会。 204 No Content 204 No Content 用于客户端请求成功,但服务器在响应正文中没有内容可发送的情况。服务器不是简单地说 204,而是说 204,表示您的请求已成功。在此响应中,消息正文为空。 205 Reset Content 有时客户端也会收到 205 Reset Content HTTP 响应,当服务器希望重置客户端视口时会使用此响应。例如,客户端创建了一个可以创建分类的表单,我们提交它,服务器会发送回 205 响应。此响应意味着客户端需要将输入类别重置为空,或重置为之前使用的类别名称的输入类别。 206 Partial Content 客户端也可以收到 **206 partial content response**,此响应表示服务器已满足部分 GET 请求,而非完整请求。客户端可以使用 **Range Header 字段**指示所需的范围,因此 206 可以导航到更大的响应。客户端还可以包含 If-Range 头部字段以使请求成为有条件的。 207 Multi-Status 207 Multi-Status 是响应码中的一个新添加项。例如,客户端向服务器发送请求,然后服务器准备响应。为了准备响应,服务器需要连接三个不同的机器,即数据库系统、文件系统和缓存系统。假设数据库系统宕机,并发送 500;在这种情况下,服务器无法说成功还是不成功,因此它会发送回 207 响应。Multi-Status 代码包含在响应正文中,格式为 text/xml 或 application/xml。 208 Already Reported 208 与 207 类似,但仅用于 WebDAV。WebDAV 是 Hypertext Transfer Protocol (HTTP) 的扩展,它允许客户端在分布式网络上执行远程 Web 内容创作操作。 3xx Redirection3xx 块是用于重定向的类。它表示客户端需要采取一些额外的措施来完成请求。这里的重定向意味着 URL 转发是将一个 URL 提供给另一个页面的过程。 HTTP 提供 HTTP 重定向响应来处理此类操作。 重定向主要分为三类
永久重定向永久重定向是指新的 URL 替换现有 URL 的重定向。这意味着原始 URL 已不再存在,并被新的 URL 替换。 以下是永久重定向的状态码 301 Moved Permanently 301 HTTP 状态码告知浏览器资源的 URI 已永久更改为“Location”响应头部中指定的新的 URI。如果我们再次在浏览器中发出请求,那么浏览器将不再向原始链接发出另一个请求。 例如: 在上面的示例中,当用户手动输入 url,即 www.example.org/index.php 时,浏览器将调用 www.example.org/index.asp,因为服务器以 301 响应码响应,文本为 Moved Permanently,并且新位置为 www.example.org/index.asp。 301 Moved Permanently HTTP 响应状态码用于永久 URL 重定向,这意味着当前链接已更新。新 URL 在 Location 字段中提供,并包含在响应中。301 HTTP 状态码也用于将用户从 HTTP 升级到 HTTPS。 RFC 2616 指出,如果收到 301 状态码作为除 GET 或 HEAD 之外的其他请求的响应,客户端必须在重定向之前询问用户。换句话说,我们可以说 301 响应状态码不会通知浏览器自动将 POST 方法请求重定向到 GET 方法请求。但是,一些浏览器会错误地将 POST 方法请求重定向到 GET 方法请求。 308 Permanent Redirect 308 状态码于 2015 年 4 月出现在 HTTP 标准中,如 RFC7538 文档规范所述。308 是一个 HTTP 响应状态码,与 301 状态码类似,表示请求的资源已被响应中包含的 Location 头部中指定的新的 URI 替换。308 很少表示实际问题,但它主要由于服务器行为或配置的变化而发生。没有其他状态码表示永久重定向。308 是唯一表示永久重定向的状态码。它还避免了从 POST 方法请求到 GET 方法请求的自动重定向。 所有现代浏览器都能识别 308 Permanent Response 并自动执行重定向。服务器发送 308 HTTP 状态码,其中包含 Location 头部作为响应,Location 头部定义了请求的资源位置。例如,如果客户端发出 POST 请求,那么 Web 服务器将配置为重定向到不同的 URI。 临时重定向临时重定向意味着请求的资源已临时分配了一个新的 URI,该 URI 在 Location 头部中指定。 以下是用于临时重定向的 HTTP 状态码 302 Found 302 Found 通知浏览器资源的 URI 已临时更改。当客户端发出请求时,浏览器仅将其重定向到新位置。下次请求到来时,浏览器将调用原始 URI。 303 See Other 服务器向客户端发送 303 响应码,要求客户端使用 GET 请求在另一个 uri 获取请求的资源,这就是该代码名称为 see other 的原因。303 HTTP 响应码通知浏览器重定向到另一个页面,而不是新上传的资源。仅当客户端发出 PUT 或 POST 请求时才发送响应。显示所请求页面的方法是 GET 方法。 307 Temporary Redirect 307 与 302 类似;唯一的区别是它告诉浏览器下一个请求应使用与原始请求相同的动词。例如,如果原始链接发出了 POST 请求,那么它应该仅通过 POST 重定向到新链接。 307 与 302 类似,因为这两个响应都告诉客户端临时重定向到请求资源的另一个位置。307 和 302 之间的唯一区别是,在 307 中,客户端必须再次使用相同的请求。例如,如果客户端发出 POST 请求作为原始请求,那么客户端应在下一个请求中遵循相同的 POST 请求。 特殊重定向特殊重定向包括以下 HTTP 状态码 300 Multiple Choices 当服务器发送 300 multiple choices HTTP 响应时,表示该请求有多个响应。 浏览器可以选择其中任何一个。没有标准的方法来选择这些多个响应。 304 Not Modified 仅当文件自上次访问以来未更改时,服务器才会生成 304 Not Modified 响应。此响应基本上提高了用户的浏览体验速度。如果用户正在访问的页面未修改,则客户端将显示存储在本地的缓存数据,这样客户端就不会向 Web 服务器发出文件请求。304 响应是响应客户端的条件验证请求发送的,以指示客户端的副本在缓存中可用。 当客户端发出条件验证请求时,客户端会通过 If-Modified-Since 头部发送其副本的 Last-Modified 日期,并使用 If-None-match 标识符发送缓存副本的 ETag 标识符。服务器检查这些头部以确定缓存中是否存在最新文件。如果它是最新的,那么服务器会发送回 304 HTTP 响应。在这种情况下,客户端可以使用缓存中的文件,而不是向服务器发送文件请求。如果服务器在缓存中找到过时文件,它将发送回 200 OK 响应和一个新的响应正文。 4xx Client error当客户端发出的请求出现错误时,服务器会向客户端发送 4xx HTTP 响应状态码。此响应表示浏览器发送了一个错误的请求,服务器无法处理该错误。为了获得正确的响应,客户端需要再次发送正确的请求。 以下是 4xx 中使用的状态码 400 Invalid Request 如果 Web 服务器由于语法错误而无法提供请求的资源,则服务器将 400 HTTP invalid request 作为响应返回。 401 Unauthorized Request 当某个网页需要身份验证,而用户尝试访问已验证的资源时,服务器会以 401 Unauthorized Request 作为响应。例如,网页通过用户 ID 和密码进行身份验证。 402 Payment Required 402 payment required HTTP 响应表示客户端需要进行在线支付才能处理请求。此响应状态码不是标准的客户端错误,保留供将来使用。 403 禁止 当客户端发送了正确的请求但服务器无法处理时,服务器会发送 403 Forbidden HTTP 响应。403 与 402 的区别在于,在 402 中,用户应该被授权访问网页,而在 403 中,身份验证不起作用。例如,当某个授权用户尝试访问受限制的页面时,会发送 403。 404 Not Found 当服务器找不到请求的资源时,服务器会发送 404 Not Found 错误。此错误的原因可能是网站所有者已删除 URL,或者用户错误输入了 URL。 405 Method not allowed 当服务器知道请求方法,但请求的资源不支持该方法时,会收到 405 Method not allowed 响应码。在这种情况下,服务器会生成 ALLOW 头部字段,其中包含目标资源支持的所有方法。 406 Not Acceptable Request 当客户端以不同的格式发出请求时,会生成 406 Not Acceptable Request HTTP 响应。原因可能是请求中使用了不同的语言或编码方法。 5xx status codes当服务器出现问题时,会向客户端发送 5xx 范围内的错误代码。当客户端请求某个网站时,浏览器会将请求发送到网站服务器,如果网站服务器无法处理请求,则会将 5xx 错误代码发送给客户端。这些错误主要发生在服务器遇到问题或无法执行请求时。 5xx 错误消息表示服务器端错误消息,其中网站服务器未能执行请求。服务器端错误并不意味着问题出在网站、计算机或互联网连接上。 有各种 5xx 状态码可用,以便可以识别具体问题 500 Internal Server Error 当服务器无法确定问题时,500 internal server error 状态码会发生,并停止响应请求。此错误可能由于服务器配置不正确而发生。要纠正此错误,网站所有者需要检查服务器配置并联系 Web 托管公司进行修复。 501 Not Implemented 501 Not implemented HTTP 错误响应代码表示服务器无法提供请求的资源,因为请求中提到的方法不受支持。 此错误状态码还会发送 Retry-After 头部,告诉客户端何时重新检查功能。服务器支持的方法是 GET 和 HEAD。如果服务器识别请求中指定的方法,但不支持它。在这种情况下,将向客户端发送 405 Not Allowed 响应。 502 Bad Gateway 502 Bad Gateway 响应代码表示代理服务器未收到源服务器或上游服务器的响应。如果边缘服务器从源服务器收到 502 Bad Gateway,则会向客户端发送 500 Origin Not Reachable 响应。 ![]() 503 Service Unavailable 当其他请求导致服务器过载或服务器正在维护时,会发送 503 Service Unavailable 响应状态码。500 和 503 之间的区别在于,在 500 中,服务器内部出现问题,导致它无法处理请求,而在 503 中,服务器工作正常,并且也能够服务请求,但选择发送 503 响应。 网站可以使用以下方法来表示此错误 504 网关超时 504 Gateway Timeout 错误发生在服务器未收到另一个上游服务器响应以完成请求时。当 Web 服务器尝试加载页面但未从第二个服务器获得所需信息时,Web 服务器将 504 用作响应代码。 505 HTTP Version Not Supported 如果服务器不支持请求中指定的 HTTP 版本,则会发送 505 HTTP Version Not Supported 响应代码。 507 Insufficient Space 507 Insufficient Space 是 WebDAV 规范引入的 HTTP 响应状态码。它用于告知客户端由于磁盘上没有可用空间而无法继续处理请求。 510 Not Extended 当客户端发送请求时,它还会发送要使用的扩展。如果服务器不支持请求中指定的扩展,则服务器将 510 作为响应代码发送。 下一个主题计算机网络教程 |
我们请求您订阅我们的新闻通讯以获取最新更新。