HTTP 状态码

2020-10-16
2 min read

面试题 -常见状态码

HTTP 状态码(HTTP Status Code)是用来表示 HTTP 响应状态的 3 位数字代码。

概览

消息 100~199

成功 200-299

重定向 300 -399

客户端出错 400-499

服务器出错 500-599

详解

#100 ~ 199 消息

100 Continue

服务器已经收到请求头,请求者应当继续提出请求。服务器返回此代码表示已收到请求的第一部分,正在等待其余部分

101 Switching Protocol

服务端已经理解了客户的请求,并通过 Ugrade 消息头通知客户端采用不同的协议来完成这个请求

102 Processing(WebDAV)

此代码表示服务器已收到并正在处理该请求,但没有响应可用。

103 Early Hints

此状态代码主要用于与Link 链接头一起使用,以允许用户代理在服务器仍在准备响应时开始预加载资源。

#200 ~ 299 成功

200 OK

请求成功。已成功处理了请求,出现此状态码表示正常状态

201 Created

该请求已成功,并因此创建了一个新的资源。这通常是在POST请求,或是某些PUT请求之后返回的响应。

202 Accepted

服务器已接受请求,但尚未处理,没有结果。

意味着不会有一个异步的响应去表明当前请求的结果,预期另外的进程和服务去处理请求,或者批处理。

203 Non-Authoritative Information

服务器已成功处理了请求,但返回的实体头部元信息不是在原始服务器上有效的确定集合,而是来自本地或者第三方的拷贝。

204 No Content

服务器成功处理了请求,但不需要返回任何实体内容。

205 Reset Content

服务器成功处理了请求,且没有返回任何内容。但是与204响应不同,返回此状态码的响应要求请求者重置文档视图。该响应主要是被用于接受用户输入后,立即重置表单,以便用户能够轻松地开始另一次输入。

206 Partial Content

服务器已经成功处理了部分 GET 请求。

#300 -399 重定向

这类状态码代表需要客户端采取进一步的操作才能完成请求。通常,这些状态码用来重定向,后续的请求地址(重定向目标)在本次响应的 Location 域中指明。

当且仅当后续的请求所使用的方法是 GET 或者 HEAD 时,用户浏览器才可以在没有用户介入的情况下自动提交所需要的后续请求。

客户端应当自动监测无限循环重定向(例如:A->A,或者A->B->C->A),因为这会导致服务器和客户端大量不必要的资源消耗。按照 HTTP/1.0 版规范的建议,浏览器不应自动访问超过5次的重定向。

300 Multiple Choice

针对请求,服务器可执行多种操作。服务器可根据请求者选择一项操作,或提供操作列表供请求者选择。

301 Moved Permanently

请求的资源已永久移动到新位置。服务器返回此响应(对 GET 或 HEAD 请求的响应)时,会自动将请求者转到新位置。

302 Found

请求的资源现在临时从不同的 URI 响应请求。由于这样的重定向是临时的,客户端应当继续向原有地址发送以后的请求。只有在Cache-Control或Expires中进行了指定的情况下,这个响应才是可缓存的。

303 See Other

对应当前请求的响应可以在另一个 URI 上被找到,而且客户端应当采用 GET 的方式访问那个资源。这个方法的存在主要是为了允许由脚本激活的POST请求输出重定向到一个新的资源。这个新的 URI 不是原始资源的替代引用。同时,303响应禁止被缓存。当然,第二个请求(重定向)可能被缓存。

304 Not Modified

自从上次请求后,请求的资源未修改过。服务器返回此响应时,不会返回资源的内容,因此可节省带宽和开销。

305 Use Proxy

被请求的资源必须通过指定的代理才能被访问。

307 Temporary Redirect

请求的资源现在临时从不同的URI 响应请求。由于这样的重定向是临时的,客户端应当继续向原有地址发送以后的请求。只有在Cache-Control或Expires中进行了指定的情况下,这个响应才是可缓存的。

#400 ~ 499 客户端出错

400 Bad Request

1、语义有误,当前请求无法被服务器理解。

2、请求参数有误。

401 Unauthorized

请求要求身份验证。 对于需要登录的网页,服务器可能返回此响应。

403 Forbidden

服务器拒绝请求。

404 Not Found

服务器找不到请求的资源。 例如,对于服务器上不存在的资源经常会返回此代码。

405 Method Not Allowed

请求中的方法不被允许(HTTP METHOD)。

406 Not Acceptable

请求的资源的内容特性无法满足请求头中的条件,因而无法生成响应实体,该请求不可接受。

407 Proxy Authentication Required

与401响应类似,只不过客户端必须在代理服务器上进行身份验证。

408 Request Timeout

服务器等候请求时发生超时。

409 Conflict

由于和被请求的资源的当前状态之间存在冲突,请求无法完成。

410 Gone

如果请求的资源已永久删除,服务器就会返回此响应。

411 Length Required

服务器不接受不含有效内容长度标头字段的请求。

412 Precondition Failed

服务器未满足请求者在请求中设置的其中一个前提条件。

413 Payload Too Large

服务器拒绝处理当前请求,因为该请求提交的实体数据大小超过了服务器愿意或者能够处理的范围。

414 URI Too Long

请求的URI 长度超过了服务器能够解释的长度,因此服务器拒绝对该请求提供服务。

这比较少见,通常的情况包括:本应使用POST方法的表单提交变成了GET方法,导致查询字符串(Query String)过长。

415 Unsupported Media Type

请求的格式不受请求页面的支持。

416 Range Not Satisfiable

如果页面无法提供请求的范围,则服务器会返回此状态代码。

417 Expectation Failed

服务器无法满足Expect请求标头字段指示的期望值。

429 Too Many Requests

用户在给定的时间内发送了太多请求(“限制请求速率”)。

431 Request Header Fields Too Large

服务器不愿意处理请求,因为它的 请求头字段太大( Request Header Fields Too Large)。

请求可以在减小请求头字段的大小后重新提交。

451 Unavailable For Legal Reasons

用户请求非法资源,例如:由政府审查的网页。

#500-599 服务器出错

500 Internal Server Error

服务器遇到了不知道如何处理的情况。

502 Bad Gateway

服务器作为网关或代理,从上游服务器收到无效响应。

503 Service Unavailable

服务器没有准备好处理请求。 常见原因是服务器因维护或重载而停机。

504 Gateway Timeout

当服务器作为网关,不能及时得到响应时返回此错误代码。