订阅更新
订阅更新
4有用+1
0

HTTP状态消息

消息状态
HTTP状态消息(HTTP state message)一种消息状态。是浏览器从 web 服务器请求服务的5个过程响应。它由 RFC 2616 规范定义的,并得到RFC 2518、RFC 2817、RFC 2295、RFC 2774、RFC 4918等规范扩展。
中文名
HTTP状态消息 [1]
外文名
HTTP state message
规范定义
HTTP状态消息

定义与概述

播报
编辑
HTTP状态码是用以表示网页服务器超文本传输协议响应状态的3位数字代码。它由 RFC 2616 规范定义,并得到 RFC 2518、RFC 2817、RFC 2295、RFC 2774 与 RFC 4918 等规范扩展 [5] [9],除非另有说明,状态码是HTTP / 1.1标准(RFC 7231)的一部分 [9]。
状态码的第一个数字定义了响应的类别,共分为五类:信息响应(1xx)、成功响应(2xx)、重定向(3xx)、客户端错误(4xx)和服务器错误(5xx) [2] [4-7] [9-12] [14]。HTTP状态消息由数字状态码和可选的文本描述组成 [6],是服务器与客户端之间沟通请求处理结果的“通用语言” [14]。

发展历程与规范

播报
编辑
HTTP状态码由 RFC 2616 规范定义的,并得到 RFC 2518、RFC 2817、RFC 2295、RFC 2774 与 RFC 4918 等规范扩展 [5] [9]。
RFC 6585最近刚刚发布,该文档描述了 4 个新的 HTTP 状态码。HTTP 协议一直在演变 [2],例如418 I'm a teapot 客户端错误响应代码表示服务器拒绝冲泡咖啡,因为它是一个茶壶,这个错误是超文本咖啡壶控制协议的参考,这是1998年愚人节的笑话 [8]。
除非另有说明,状态码是HTTP / 1.1标准(RFC 7231)的一部分 [9]。

信息

播报
编辑
当浏览器从 web 服务器请求服务时,可能会发生错误。
从而有可能会返回下面的一系列状态消息 [1]:
消息:
描述:
100 Continue
服务器仅接收到部分请求,但是一旦服务器并没有拒绝该请求,客户端应该继续发送其余的请求。
101 Switching Protocols
服务器转换协议:服务器将遵从客户的请求转换到另外一种协议。

成功

播报
编辑
消息:
描述:
200 OK
请求成功(其后是对GET和POST请求的应答文档。)
201 Created
请求被创建完成,同时新的资源被创建。
202 Accepted
供处理的请求已被接受,但是处理未完成。
203 Non-authoritative Information
文档已经正常地返回,但一些应答头可能不正确,因为使用的是文档的拷贝。
204 No Content
没有新文档。浏览器应该继续显示原来的文档。如果用户定期地刷新页面,而Servlet可以确定用户文档足够新,这个状态代码是很有用的。
205 Reset Content
没有新文档。但浏览器应该重置它所显示的内容。用来强制浏览器清除表单输入内容。
206 Partial Content
客户发送了一个带有Range头的GET请求,服务器完成了它。

重定向

播报
编辑
消息:
描述:
300 Multiple Choices
多重选择。链接列表。用户可以选择某链接到达目的地。最多允许五个地址。
301 Moved Permanently
所请求的页面已经转移至新的url。
302 Found
所请求的页面已经临时转移至新的url。
303 See Other
所请求的页面可在别的url下被找到。
304 Not Modified
未按预期修改文档。客户端有缓冲的文档并发出了一个条件性的请求(一般是提供If-Modified-Since头表示客户只想比指定日期更新的文档)。服务器告诉客户,原来缓冲的文档还可以继续使用。
305 Use Proxy
客户请求的文档应该通过Location头所指明的代理服务器提取。
306 Unused
此代码被用于前一版本。已不再使用,但是代码依然被保留。
307 Temporary Redirect
被请求的页面已经临时移至新的url。

客户端错误

播报
编辑
消息:
描述:
400 Bad Request
服务器未能理解请求。
401 Unauthorized
被请求的页面需要用户名和密码。
402 Payment Required
此代码尚无法使用。
403 Forbidden
对被请求页面的访问被禁止。
404 Not Found
服务器无法找到被请求的页面。
405 Method Not Allowed
请求中指定的方法不被允许。
406 Not Acceptable
服务器生成的响应无法被客户端所接受。
407 Proxy Authentication Required
用户必须首先使用代理服务器进行验证,这样请求才会被处理。
408 Request Timeout
请求超出了服务器的等待时间。
409 Conflict
由于冲突,请求无法被完成。
410 Gone
被请求的页面不可用。
411 Length Required
"Content-Length" 未被定义。如果无此内容,服务器不会接受请求。
412 Precondition Failed
请求中的前提条件被服务器评估为失败。
413 Request Entity Too Large
由于所请求的实体的太大,服务器不会接受请求。
414 Request-url Too Long
由于url太长,服务器不会接受请求。当post请求被转换为带有很长的查询信息的get请求时,就会发生这种情况。
415 Unsupported Media Type
由于媒介类型不被支持,服务器不会接受请求。
416
服务器不能满足客户在请求中指定的Range头。
417 Expectation Failed
-

服务器错误

播报
编辑
消息:
描述:
500 Internal Server Error
请求未完成。服务器遇到不可预知的情况。
501 Not Implemented
请求未完成。服务器不支持所请求的功能。
502 Bad Gateway
请求未完成。服务器从上游服务器收到一个无效的响应。
503 Service Unavailable
请求未完成。服务器临时过载或当机。
504 Gateway Timeout
网关超时。
505 HTTP Version Not Supported
服务器不支持请求中指明的HTTP协议版本。

新增状态码

播报
编辑
随着HTTP协议的持续演进,新的RFC标准会引入新的状态码以适应现代Web开发的需求,例如RFC 6585(于2012年发布)就定义了4个新的HTTP状态码 [2]。
428 Precondition Required(要求先决条件):客户端必须发送如If-Match或If-None-Match等特定的请求头才能执行请求,这个方法为服务器提供一种有效的方法来阻止“丢失更新”(lost update)问题 [2]。
429 Too Many Requests(太多请求):用于请求速率限制,当客户端在单位时间内发送过多请求时,服务器会返回此状态码,响应头应包含Retry-After以告知客户端何时可以再次尝试请求 [2] [14]。
431 Request Header Fields Too Large(请求头字段太大):当客户端发送的HTTP请求头过大,超出服务器处理能力时,服务器会返回此状态码 [2]。
511 Network Authentication Required(要求网络认证):客户端需要先进行网络认证才能访问资源,常见于公共WiFi等网络接入点,在用户完成登录或接受协议前,会拦截HTTP请求并返回此状态码 [2]。

实际应用与场景

播报
编辑
当遇到4xx或5xx状态码时,需要检查请求的有效性和正确性,并使用开发者工具或日志记录来跟踪和调试请求和响应。对于常见的4xx和5xx状态码,提供友好和有用的错误页面对于用户体验和问题排查很重要 [3]。
了解与缓存相关的状态码,如304 Not Modified,可以帮助优化应用程序的性能,合理使用缓存策略可以减少对服务器的请求次数,提高响应速度,并降低带宽和资源消耗 [3]。
401 Unauthorized表示请求需要进行身份验证,服务器要求客户端提供有效的身份凭证才能访问资源。403 Forbidden表示服务器拒绝了请求,即使身份验证已成功,这通常是因为客户端没有足够的权限访问该资源 [3]。
重定向状态码对于搜索引擎优化非常重要,当网站的URL结构发生变化时,使用重定向状态码可以确保搜索引擎能够正确索引新的页面位置,从而保持网站的可见性和排名 [13]。301 Moved Permanently是永久重定向,浏览器会缓存,对SEO友好 [14]。
HTTP状态码不仅是“错误提示”,更是系统设计的契约。在RESTful API设计中,依赖状态码传达结果,例如200 OK表示标准成功响应,201 Created表示资源创建成功,400 Bad Request表示请求格式错误,404 Not Found表示URL对应资源不存在,500 Internal Server Error表示通用服务器错误 [14]。
对于运维人员而言,HTTP状态码是监控和维护服务器性能与稳定性的重要指标 [10]。503 Service Unavailable表示服务暂时不可用,通常由于过载或维护中,504 Gateway Timeout表示网关等待上游响应超时 [14]。

优势与不足

播报
编辑
HTTP重定向状态码支持资源更改,当服务器资源位置变化时,可引导客户端访问新位置,无需手动修改请求代码。它有助于维持链接可用性,例如在页面不存在时引导用户至相关页面以提升用户体验,同时对搜索引擎优化(SEO)至关重要,能确保URL结构变化后搜索引擎正确索引新页面,维持网站可见性和排名 [13]。
重定向状态码会增加额外的网络请求,导致延迟和网络负载增加。无谓的重定向可能浪费网络带宽和服务器资源,且重定向次数过多或链过长可能引发SEO劣化,如搜索引擎低排名或不索引 [13]。
参考资料
展开全部