HTTP 状态码
HTTP 响应状态代码指示特定 HTTP 请求是否已成功完成。
响应分为五类:
- 信息响应
100 – 199
- 成功响应
200 – 299
- 重定向
300 – 399
- 客户端错误
400 – 499
- 服务器错误
500 – 599
后面我们把常用的 HTTP 状态码列举说明一下 ⬇️ ⬇️ ⬇️
100 - 199
信息响应
100 - Continue
这个临时响应表明,迄今为止的所有内容都是可行的,客户端应该继续请求,如果已经完成,则忽略它。
101 - Switching Protocol
该响应是响应客户端的 Upgrade (en-US) 标头发送的,并且指示服务器也正在切换的协议。
102 - Processing
该响应表示服务器已收到并正在处理该请求,但没有响应可用。
103 - Early Hints
该响应主要用于与 Link 链接头一起使用,以允许用户代理在服务器仍在准备响应时开始预加载资源。
200 - 299
成功响应
200 - OK
表示请求成功。不同的 HTTP 方法表达的含义不同:
- GET:资源已被提取并在消息正文中传输;
- HEAD:实体标头位于消息正文中;
- POST:描述动作结果的资源在消息体中传输;
- TRACE:消息正文包含服务器收到的请求消息。
201 - Created
请求已成功,并因此创建了一个新的资源。通常是在 POST
请求,或是某些 PUT
请求之后返回的响应。
204 - No Content
服务器成功处理了请求,但不需要返回任何实体内容,并且希望返回更新了的元信息。
响应可能通过实体头部的形式,返回新的或更新后的元信息。 如果存在这些头部信息,则应当与所请求的变量相呼应。如果客户端是浏览器的话,那么用户浏览器应保留发送了该请求的页面,而不产生任何文档视图上的变化,即使按照规范新的或更新后的元信息应当被应用到用户浏览器活动视图中的文档。
由于204响应被禁止包含任何消息体,因此它始终以消息头后的第一个空行结尾。
205 - Reset Content
服务器成功处理了请求,且没有返回任何内容。但是与204响应不同,返回此状态码的响应要求请求者重置文档视图。
该响应主要是被用于接受用户输入后,立即重置表单,以便用户能够轻松地开始另一次输入。与204响应一样,该响应也被禁止包含任何消息体,且以消息头后的第一个空行结束。
206 - Partial Content
服务器已经成功处理了部分 GET 请求。
类似于 FlashGet 或者迅雷这类的 HTTP 下载工具都是使用此类响应实现断点续传或者将一个大文档分解为多个下载段同时下载。该请求必须包含 Range 头信息来指示客户端希望得到的内容范围,并且可能包含 If-Range 来作为请求条件。
300 - 399
重定向
300 - Multiple Choice
被请求的资源有一系列可供选择的回馈信息,每个都有自己特定的地址和浏览器驱动的商议信息。用户或浏览器能够自行选择一个首选的地址进行重定向。
301 - Moved Permanently
被请求的资源已永久移动到新位置,并且将来任何对此资源的引用都应该使用本响应返回的若干个 URI 之一。
如果可能,拥有链接编辑功能的客户端应当自动把请求的地址修改为从服务器反馈回来的地址。除非额外指定,否则这个响应也是可缓存的。
302 - Found
请求的资源现在临时从不同的 URI 响应请求。
由于这样的重定向是临时的,客户端应当继续向原有地址发送以后的请求。只有在 Cache-Control 或 Expires 中进行了指定的情况下,这个响应才是可缓存的。
303 - See Other
对应当前请求的响应可以在另一个 URI 上被找到,而且客户端应当采用 GET 的方式访问那个资源。
这个方法的存在主要是为了允许由脚本激活的POST请求输出重定向到一个新的资源。
304 - Not Modified
如果客户端发送了一个带条件的 GET 请求且该请求已被允许,而文档的内容(自上次访问以来或者根据请求的条件)并没有改变,则服务器应当返回这个状态码。
304 响应禁止包含消息体,因此始终以消息头后的第一个空行结尾。
305 - Use Proxy
被请求的资源必须通过指定的代理才能被访问。
Location 域中将给出指定的代理所在的 URI 信息,接收者需要重复发送一个单独的请求,通过这个代理才能访问相应资源。只有原始服务器才能建立305响应。
307 - Temporary Redirect
请求的资源现在临时从不同的 URI 响应请求。由于这样的重定向是临时的,客户端应当继续向原有地址发送以后的请求。
只有在 Cache-Control 或 Expires 中进行了指定的情况下,这个响应才是可缓存的。
308 Permanent Redirect
这意味着资源现在永久位于由 Location: HTTP Response 标头指定的另一个 URI。
这与 301 Moved Permanently HTTP 响应代码具有相同的语义,但用户代理不能更改所使用的 HTTP 方法 —— 如果在第一个请求中使用 POST,则必须在第二个请求中使用 POST。
400 - 499
客户端响应
400 - Bad Request
- 语义有误,当前请求无法被服务器理解。除非进行修改,否则客户端不应该重复提交这个请求;
- 请求参数有误。
401 - Unauthorized
当前请求需要用户验证。
该响应必须包含一个适用于被请求资源的 WWW-Authenticate 信息头用以询问用户信息。客户端可以重复提交一个包含恰当的 Authorization 头信息的请求。
如果当前请求已经包含了 Authorization 证书,那么 401 响应代表着服务器验证已经拒绝了那些证书。
如果 401 响应包含了与前一个响应相同的身份验证询问,且浏览器已经至少尝试了一次验证,那么浏览器应当向用户展示响应中包含的实体信息,因为这个实体信息中可能包含了相关诊断信息。
403 - Forbidden
服务器已经理解请求,但是拒绝执行它。
与 401 响应不同的是,身份验证并不能提供任何帮助,而且这个请求也不应该被重复提交。
404 - Not Found
请求失败,请求所希望得到的资源未被在服务器上发现。
没有信息能够告诉用户这个状况到底是暂时的还是永久的。假如服务器知道情况的话,应当使用 410 状态码来告知旧资源因为某些内部的配置机制问题,已经永久的不可用,而且没有任何可以跳转的地址。
404 这个状态码被广泛应用于当服务器不想揭示到底为何请求被拒绝或者没有其他适合的响应可用的情况下。
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 状态码。除非额外说明,否则这个响应是可缓存的。
429 - Too Many Requests
用户在给定的时间内发送了太多请求。
500 - 599
服务端响应
500 - Internal Server Error
服务器遇到了不知道如何处理的情况。
502 - Bad Gateway
此错误响应表明服务器作为网关需要得到一个处理这个请求的响应,但是得到一个错误的响应。
503 - Service Unavailable
服务器没有准备好处理请求。常见原因是服务器因维护或重载而停机。
请注意,与此响应一起,应发送解释问题的用户友好页面。 这个响应应该用于临时条件和 Retry-After:如果可能的话,HTTP头应该包含恢复服务之前的估计时间。 网站管理员还必须注意与此响应一起发送的与缓存相关的标头,因为这些临时条件响应通常不应被缓存。
504 - Gateway Timeout
当服务器作为网关,不能及时得到响应时返回此错误代码。
505 - HTTP Version Not Supported
服务器不支持请求中所使用的HTTP协议版本。
510 - Not Extended
客户端需要对请求进一步扩展,服务器才能实现它。服务器会回复客户端发出扩展请求所需的所有信息。
511 - Network Authentication Required
511 状态码指示客户端需要进行身份验证才能获得网络访问权限。