你对 HTTP 状态码有了解吗?😵
服务器返回的 响应报文 中第一行为状态行,包含了状态码以及原因短语,用来告知客户端请求的结果。
状态码 | 类别 | 原因短语 |
---|---|---|
100-199 | Informational(信息性状态码) | 接收的请求正在处理 |
200-299 | Success(成功状态码) | 请求正常处理完毕 |
300-399 | Redirection(重定向状态码) | 需要进行附加操作以完成请求 |
400-499 | Client Error(客户端错误状态码) | 服务器无法处理请求 |
500-599 | Server Error(服务器错误状态码) | 服务器处理请求出错 |
100-199 信息响应
- **100 Continue :**临时响应,表明到目前为止都很正常,客户端可以继续发送请求或者忽略这个响应
- 102 Processing:表示服务器已收到并正在处理该请求,但没有响应可用
200-299 成功响应
- 200 OK:请求成功。成功的含义取决于HTTP方法:
- GET:资源已被提取并在消息正文中传输
- HEAD:实体标头位于消息正文中
- POST:描述动作结果的资源在消息体中传输
- TRACE:消息正文包含服务器收到的请求消息
- 201 Created: 该请求已成功,并因此创建了一个新的资源。通常是在POST请求,或是某些PUT请求之后返回的响应
- 204 No Content: 请求已经成功处理,但是返回的响应报文不包含实体的主体部分。一般用于需要从客户端往服务器发送信息,而不需要返回数据时
- 206 Partial Content :表示客户端进行了范围请求,响应报文包含由 Content-Range 指定范围的实体内容
300-399 重定向
- 301 Moved Permanently:永久重定向
- 302 Found:临时性重定向
- 即使规范要求浏览器在重定向时保证请求方法和请求主体不变,但并不是所有的用户代理都会遵循这一点,所以推荐仅在响应
GET
或HEAD
方法时采用 302 状态码,而在其他时候使用 307 来替代
- 即使规范要求浏览器在重定向时保证请求方法和请求主体不变,但并不是所有的用户代理都会遵循这一点,所以推荐仅在响应
- 303 See Other : 和 302 有着相同的功能,但是 303 明确要求客户端应该采用 GET 方法获取资源
- 304 Not Modified: 如果客户端发送了一个带条件的 GET 请求且该请求已被允许,而文档内容(自上次访问以来或根据请求的条件)并没有改变,则服务器会返回 304
- 条件请求例如:If-Match,If-Modified-Since,If-None-Match,If-Range,If-Unmodified-Since
- 307 Temporary Redirect : 临时重定向,与302的区别在于,当发送重定向请求的时候,
307
状态码可以确保请求方法和消息主体不会发生变化(如果使用302
,一些旧客户端可能会强制将请求方法转化为GET
)
400-499 客户端响应
- 400 Bad Request:
- 语义有误,当前请求无法被服务器理解。除非进行修改,否则客户端不应该重复提交这个请求
- 请求参数有误
- 401 Unauthorized: 当前请求需要用户验证,如果请求已经包含了 Authorization 证书,那么401响应代表着服务器验证已经拒绝了那些证书
- 403 Forbidden :服务器已经理解请求,但是拒绝执行它
- 404 Not Found:请求失败,请求所希望得到的资源未被在服务器上发现。没有信息能够告诉用户这个状况到底是暂时的还是永久的。404这个状态码被广泛应用于当服务器不想揭示到底为何请求被拒绝或者没有其他适合的响应可用的情况下
500-599 服务器响应
- 500 Internal Server Error : 服务器正在执行请求时发生错误。
- 502 Bad Gateway : 此错误响应表明服务器作为网关需要得到一个处理这个请求的响应,但是得到一个错误的响应
- 503 Service Unavailable : 服务器暂时处于超负载或正在进行停机维护,现在无法处理请求
Reference: