这是我参与「第三届青训营 -后端场」笔记创作活动的第5篇笔记
一、HTTP 报文的状态码在哪里?有什么用?
服务器返回的 响应报文 中第一行为状态行,包含了状态码以及原因短语,用来告知客户端请求的结果。
二、项目小组遇到的一个重定向的问题
在 Gin 框架中,如果你设置的路径是 /app/user,但是你客户端访问的路径是 /app/user/,那么这里 gin 框架会发生 307 重定向,如果这里没有做任何的处理,你的这个 /app/user/ 的请求就无法访问到 /app/user,我们小组解决方法是更改路径把 /app/user 改成 /app/user/,不要小看多加的这个 / ,如果没有这个 / 你设置的这个路径就有可能无法被访问。
框架日志:[GIN-debug] redirecting request 307:
三、状态码总结
| 状态码 | 类别 | 含义 |
|---|---|---|
| 1XX | Informational(信息性状态码) | 接收的请求正在处理 |
| 2XX | Success(成功状态码) | 请求正常处理完毕 |
| 3XX | Redirection(重定向状态码) | 需要进行附加操作以完成请求 |
| 4XX | Client Error(客户端错误状态码) | 服务器无法处理请求 |
| 5XX | Server Error(服务器错误状态码) | 服务器处理请求出错 |
部分状态码详细解释
1.1XX信息
- 100 Continue :表明到目前为止都很正常,客户端可以继续发送请求或者忽略这个响应。
2.2XX成功
- 200 OK
- 204 No Content :请求已经成功处理,但是返回的响应报文不包含实体的主体部分。一般在只需要从客户端往服务器发送信息,而不需要返回数据时使用。
- 206 Partial Content :表示客户端进行了范围请求,响应报文包含由 Content-Range 指定范围的实体内容。
3.3XX重定向
- 301 Moved Permanently :永久性重定向
- 302 Found :临时性重定向
- 303 See Other :和 302 有着相同的功能,但是 303 明确要求客户端应该采用 GET 方法获取资源。
- 注:虽然 HTTP 协议规定 301、302 状态下重定向时不允许把 POST 方法改成 GET 方法,但是大多数浏览器都会在 301、302 和 303 状态下的重定向把 POST 方法改成 GET 方法。
- 304 Not Modified :如果请求报文首部包含一些条件,例如:If-Match,If-Modified-Since,If-None-Match,If-Range,If-Unmodified-Since,如果不满足条件,则服务器会返回 304 状态码。
- 307 Temporary Redirect :临时重定向,与 302 的含义类似,但是 307 要求浏览器不会把重定向请求的 POST 方法改成 GET 方法。
4.4XX客户端错误
- 400 Bad Request :请求报文中存在语法错误。
- 401 Unauthorized :该状态码表示发送的请求需要有认证信息(BASIC 认证、DIGEST 认证)。如果之前已进行过一次请求,则表示用户认证失败。
- 403 Forbidden :请求被拒绝。
- 404 Not Found:代表客户端在浏览网页时,服务器无法正常提供消息,或是服务器无法回应且不知原因。
5.5XX服务器错误
- 500 Internal Server Error :服务器正在执行请求时发生错误。
- 503 Service Unavailable :服务器暂时处于超负载或正在进行停机维护,现在无法处理请求。
四、总结
通过解决这个项目中的小问题,我通过对重定向资料的查询,再一次的温习了 HTTP 状态码的知识。也明白了编写路径的时候每一个\它都起到重大的作用,所以设置路径的时候,一定要考虑周全。