HTTP知识学习(状态码)

HTTP知识学习

状态码 HTTP 20X

200 OK

请求成功,应用最为广泛

如果是GET请求的话,也代表着资源获取成功

201 Created

一般在POST请求中使用,代表资源创建成功

可以参考https://q.shanyue.tech/http/20x.html#_201-created
POST请求后返回201

204 No Content

No Content,即服务器不会发送响应体(Response Body)。

它有以下场景:

  1. PUT 请求,修改资源的某个状态,此时 204 代表修改成功,无需响应体。见 RFC7231之 204 状态码(opens new window)
  2. DELETE/OPTION 请求
  3. 打点 API

206 Partial Content

partial:部分的

当客户端指定 Range 范围请求头时,服务器端将会返回部分资源,即Partial Content,此时状态码为 206。

主要是在针对较大的音视频资源,使用206表示部分内容。

状态码 HTTP 30X

30X为重定向部分。

301 Moved Permanently

永久重定向,该操作比较危险,需要谨慎操作:如果设置了301,但是一段时间后又想取消,但是浏览器中已经有了缓存,还是会重定向。

302 Found

临时重定向,但是会在重定向的时候改变 method:把 POST 改成 GET,于是有了 307。

307 Temporary Redirect

临时重定向,在重定向时不会改变 method。

308 Permanent Redirect

永久重定向,在重定向时不会改变 method。

Location Header

在HTTP重定向时,会使用Location响应头来指明重定向后的地址。HTTP的Header不区分大小写,因此以下的locationLocation相同。

Response Body

301/302/307/308 响应有 Response Body 吗?

有,如上示例,知乎的重定向就包含响应体。

1
2
3
4
5
6
7
# 知乎的响应体是一段文字
$ curl https://www.zhihu.com
Redirecting to <a href="//www.zhihu.com/signin?next=%2F">//www.zhihu.com/signin?next=%2F</a>.

# 可通过 content-length 响应头获取响应体的长度
$ curl -s --head https://www.zhihu.com | grep content-length
content-length: 93

Client and follow redirect

在客户端发送请求时,如果发现某网址经重定向,则可再次向重定向后的网址发送请求。一些 HTTP 客户端工具,则会自动集成该功能,比如 curl 通过 –location 即可。

1
$ curl --head --location https://zhihu.com

HTTP知识学习(状态码)
http://seddon.lol/2022/10/14/HTTP知识学习-状态码/
作者
Seddon
发布于
2022年10月14日
许可协议