状态码的职责是在客户端向服务器端发送请求时描述返回的请求结果。在状态码的帮助下,用户可以知道服务器端是正常处理请求还是错误。让我们在本期中进行总结 HTTP 状态码。
HTTP 状态码分为 5 类:
状态码
类别
原因短语
1XX
Informational(信息状态码)
接收请求正在处理中
2XX
Successful(成功状态码)
请求正常处理
3XX
Redirection(重定向状态码)
需要额外的操作来完成请求
4XX
Client error(客户端错误状态码)
服务器无法处理请求
5XX
Server error(服务器状态码错误)
服务器处理请求出错
1XX 信息响应
100 Continue(继续)
这一临时响应表明,客户端应在收到请求的起始部分继续请求,如果已完成,则忽略它。
101 Switching Protocol(切换协议)
根据客户端的指示,服务器将协议切换成 Update 第一个列出的协议,并指示服务器也在切换。
102 Processing (WebDAV)
该代码表示服务器已收到并正在处理该请求,但没有响应。
103 Early Hints
该状态代码主要用于和谐 Link 一起使用链接头,允许用户代理在服务器仍在准备响应时开始预加载资源。
2XX 成功响应
200 OK
在响应报告中,随状态码返回的信息会因方法不同而发生变化。例如,使用 GET 当使用该方法时,相应要求资源的实体将作为响应返回; HEAD 在方法中,相应要求资源的第一个实体不会作为响应返回(即在响应中只返回第一个,不会返回实体的主要部分)。
201 Created(已创建)
对于需要服务器创建对象的要求,已经创建了新的资源。这通常是在 POST 请求,或者某些 PUT 请求后返回的响应。
202 Accepted(已接受)
请求已收到,但服务器尚未处理或响应。这意味着不会有异步响应来显示当前请求的结果,并期望其他过程和服务来处理请求或批处理。
203 Non-Authoritative Information(非权威信息)
服务器已经成功处理了请求,但返回的物理头部元信息不是在原始服务器上有效地确定的,而是来自当地或第三方的副本。当前信息可能是原始版本的子集或超集。例如,包含资源的元数据可能会导致原始服务器知道元信息的超集。没有必要使用这个状态码,只有在响应中不使用这个状态码才会返回 200 OK 只有在这种情况下才合适。
204 No Content(无内容)
该状态码代表服务器收到的请求已成功处理,但返回的响应报告不包括实体的主要部分。此外,任何实体的主体都不允许返回。例如,当从浏览器发出请求时,返回 204 响应,然后浏览器显示的页面不会更新。一般来说,它只需要从客户端发送到服务器,而不需要向客户端发送新的信息内容。
205 Reset Content(重置内容)
服务器成功地处理了请求,没有返回任何内容。但与 204 不同的响应要求申请人重置该状态码的文档视图。响应主要用于接受用户输入后立即重置表单,以便用户能够轻松开始另一个输入。和 204 同样,该响应也被禁止包含任何消息体,并以消息头后的第一次空行结束。
206 Partial Content(部分内容)
该状态码表示客户端已经进行了范围请求,服务器已经成功执行了这部分 GET 请求。响应报告包括原因。 Content-Range 实体内容在指定范围内。
207 Multi-Status (WebDAV)
由WebDAV组成(RFC 2518)扩展状态码代表XML消息,并可能包含一系列独立的响应代码,根据之前的请求数量。
208 Already Reported (WebDAV)
在 DAV 里面使用: propstat 为了避免重复枚举多个绑定的内部成员到同一个集合,响应元素。
226 IM Used (HTTP Delta encoding)
服务器已经完成了资源 GET 请求和响应是对当前实例应用的一个或多个实例操作结果的表示。
3XX 重定向
300 Multiple Choice(多项选择)
被要求的资源有一系列可供选择的反馈信息,每个资源都有自己的特定地址和浏览器驱动的讨论信息。用户或浏览器可以选择重定向的首选地址。
301 Moved Permanently(永久搬离)
永久性重定向。该状态码表示,所需资源已分配给新的资源 URI,现在应该使用资源所指的URI。也就是说,如果已经对应了资源 URI 保存为书签,此时应按 Location 第一个字段提示 URI 重新保存。
302 Found(已找到)
临时重定向。该状态代码表示,要求的资源已分配给新的资源 URI,希望用户(本次)能使用新的 URI 访问。
303 See Other(见其他)
该状态码表示,由于要求对应的资源存在另一个 URI,应使用 GET 方法定向获取要求的资源。
304 Not Modified(未修改)
该状态码表示,当客户端发送附带条件请求时,服务器端允许请求访问资源,但不符合条件。304 当状态码返回时,不包括响应的主要部分。附带条件的请求是指使用 GET 方法请求报文包含方法请求报文 If-Match,If-ModifiedSince,If-NoneMatch,If-Range,If-Unmodified-Since 中任一首。
305 Use Proxy(使用代理)
被要求的资源必须通过指定的代理进行访问。Location 指定的代理所在的域将在域中提供 URI 接收者需要通过此代理重复发送单独的请求来访问相应的资源。只有原始服务器才能建立305响应。
306 unused(未使用)
在最新版本的规范中,306 状态码不再使用。
307 Temporary Redirect(临时重定向)
临时重定向。状态码和 302 Found 有同样的含义。尽管如此。 302 标准禁止 POST 变成GET,但实际使用时不遵守。307 会遵循浏览器标准,不会遵循浏览器标准 POST 变成 GET。然而,每个浏览器在处理响应时可能会有不同的行为。
308 Permanent Redirect
这意味着资源现在是永久的 Location: HTTP Response 另一个标头指定 URI。这与 301 Moved Permanently HTTP 响应代码具有相同的语义,但用户代理不能更改所使用的语义 HTTP 方法:如果在第一个请求中使用 POST,必须在第二个请求中使用 POST。
4XX 客户端响应
400 Bad Request(坏请求)
该状态代码表示请求报告中的语法错误。当错误发生时,请求的内容需要修改,然后再次发送请求。此外,浏览器会像 200 OK 同样对待状态码。
401 Unauthorized(未授权)
状态码表示发送的请求需要通过 HTTP 认证(BASIC 认证、DIGEST 认证)认证信息。另外,如果以前做过 1 第二个请求意味着用户认证失败。返回含有 401 响应必须包括适用于被要求资源的响应 WWW-Authenticate 第一部分用于质询(challenge)用户信息。第一次接收浏览器时 401 响应会弹出认证对话窗口。
402 Payment Required(要求付款)
该响应码保留以供将来使用。创建该响应码的最初目的是用于数字支付系统,但目前尚未使用。
403 Forbidden(禁止)
该状态码表明服务器拒绝访问请求资源。服务器端没有必要给出拒绝的详细理由,但如果您想解释,您可以在实体的主体部分描述原因,以便用户可以看到它。未经文件系统的访问授权,访问权限存在一些问题(未经授权的发送源 IP 试图访问地址)等列出的情况可能会发生 403 的原因。
404 Not Found(未找到)
该状态码显示服务器上找不到要求的资源。此外,当服务器端拒绝要求且不想解释原因时,也可以使用。
405 Method Not Allowed(不允许使用的方法)
请求行中指定的请求方法不能用于请求相应的资源。响应必须返回一个 Allow 头部信息用于表示当前资源可接受的请求方法列表。鉴于 PUT,DELETE 该方法将编写服务器上的资源,因此大多数网页服务器不支持或在默认配置下不允许上述请求方法,并将返回此类请求 405 错误。
406 Not Acceptable(不可接受)
要求资源的内容特征不能满足要求头中的条件,因此不能产生响应实体。
407 Proxy Authentication Required(需要代理认证)
与 401 响应相似,但客户端必须在代理服务器上进行身份验证。代理服务器必须返回一个 Proxy-Authenticate 用于身份查询。客户端可以返回一个 Proxy-Authorization 验证信息头。
408 Request Timeout(请求超时)
请求加班。客户端未能在服务器准备等待时间内完成请求发送。客户端可以在没有任何更改的情况下随时再次提交此请求。
409 Conflict(冲突)
由于与所需资源的当前状态之间存在冲突,请求无法完成。该代码只能在这种情况下使用:用户被认为可以解决冲突,并将重新提交新的请求。响应应包含足够的信息,以便用户找到冲突的来源。
410 Gone(消失了)
被要求的资源不再可用于服务器,也没有已知的转发地址。这种情况应被认为是永久性的。如有可能,具有链接编辑功能的客户应在获得用户许可后删除所有指向该地址的引用。如果服务器不知道或不确定这种情况是否永久,则应使用它 404 状态码。这种响应可以缓存,除非附加说明。
411 Length Required(要求长度指示)
服务器拒绝没有定义 Content-Length 在头部的情况下接受请求。添加有效的请求消息体长度 Content-Length 客户端可以在头后再次提交请求。
412 Precondition Failed(先决条件失败)
当服务器验证在请求的头字段中提供先决条件时,它不能满足其中一个或多个条件。该状态码允许客户端在获取资源时在请求的元信息(请求头字段数据)中设置先决条件,以避免该请求方法应用于其所需内容以外的资源。
413 Payload Too Large(要求实体太大)
由于提交的实体数据大小超出了服务器愿意或可以处理的范围,服务器拒绝处理当前的请求。在这种情况下,服务器可以关闭连接,以避免客户继续发送此请求。如果这种情况是临时的,服务器应该返回一个 Retry-After 响应头,告诉客户可以在多长时间后重新尝试。
414 URI Too Long(请求 URI 太长)
请求的 URI 长度超过了服务器可以解释的长度,因此服务器拒绝为该请求提供服务。这是罕见的,通常包括:应该使用 POST 方法的表单提交已经变成 GET 方法导致查询字符串(Query String)过长。
415 Unsupported Media Type(不支持的媒体类型)
对于当前请求的方法和资源,请求中提交的实体不是服务器中支持的格式,因此被拒绝。
416 Range Not Satisfiable(未满足要求范围)
若包含在请求中 Range 请求头,还有 Range 指定的任何数据范围与当前资源的可用范围不一致,请求中也没有定义 If-Range 请求头,服务器应返回 416 状态码。
417 Expectation Failed(不能满足期望)
该响应代码意味着服务器无法满足 Expect 请求标头字段指示的期望值。
418 I'm a teapot
拒绝尝试使用服务器 “茶壶泡咖啡”。
421 Misdirected Request
该请求针对无法响应的服务器。这可以由服务器发送,该服务器未配置为包含在请求中的服务器 URI 对方案和权限的组合作出反应。
422 Unprocessable Entity (WebDAV)
请求格式良好,但由于语义错误,不能遵循。
423 Locked (WebDAV)
正在访问的资源被锁定。
424 Failed Dependency (WebDAV)
由于之前的请求失败,请求失败了。
425 Too Early
服务器不愿意冒险处理可能重播的请求。
426 Upgrade Required
服务器拒绝使用当前协议执行请求,但可能愿意在客户机升级到其他协议后这样做。服务器 426 响应中发送 Upgrade (en-US) 头部指示所需的协议。
428 Precondition Required
原始服务器要求该请求是有条件的。目的是防止“丢失更新”问题,即客户端获取资源状态,修改状态并返回服务器,第三方修改服务器状态,导致冲突。
429 Too Many Requests
用户在给定的时间内发送了太多的请求(“限制请求速率”)。
431 Request Header Fields Too Large
由于服务器不愿意处理请求,因此服务器不愿意处理请求 请求头字段太大( Request Header Fields Too Large)。请求可在减小请求头字段大小后重新提交。
451 Unavailable For Legal Reasons
用户要求非法资源,如政府审查的网页。
5XX 服务端响应
500 Internal Server Error(内部服务器错误)
该状态码表明服务器端在执行请求时出现了错误。也可能是 Web 应用存在的 bug 或者一些临时故障。
501 Not Implemented(未实现)
服务器不支持此请求方法,也不能处理。只有 GET 和 HEAD 它需要服务器的支持,它们不会返回错误的代码。
502 Bad Gateway(网关故障)
这种错误的反应表明,服务器作为一个网关需要得到一个响应来处理这个请求,但却得到了一个错误的反应。
503 Service Unavailable(未提供此服务)
状态码显示服务器暂时超载或停机,请求无法处理。如果您事先知道解除上述情况所需的时间,最好将其写入 RetryAfter 第一个字段返回给客户端。
504 Gateway Timeout(网关超时)
当服务器作为网关无法及时得到响应时,返回错误代码。
505 HTTP Version Not Supported(不支持的 HTTP 版本)
服务器不支持请求中使用的服务器 HTTP 协议版本。
506 Variant Also Negotiates
服务器内部配置错误:协商要求的透明内容,导致循环引用。
507 Insufficient Storage
服务器内部配置错误:选定的变体资源被配置为参与透明内容谈判本身,因此不是谈判过程中的适当端点。
508 Loop Detected (WebDAV)
在处理请求时,服务器检测到无限循环。
510 Not Extended
客户端需要进一步扩展请求,才能实现服务器。服务器将回复客户端发送扩展请求所需的所有信息。
511 Network Authentication Required
511 状态码表示客户端需要进行身份验证才能获得网络访问权限。