引言
本文从以下几个方面,循序渐进走进 HTTP 状态码
- 状态码用来做什么的
- 常见状态码有哪些
- 容易争论的点
状态码用来做什么的
HTTP 状态行中使用状态码(Status Code)和原因短语(Reason Phrase)来简单描述请求的结果
- Version:版本号,例如 HTTP/2
- Reason:是状态码的简短文字描述,例如“OK”“Not Found”等等,也可以自定义,它其实对状态码的解释说明
- Status Code:状态码,表示服务器对请求的处理结果
这里我们重点介绍状态码,状态码是用以表示 HTTP 响应状态的 3 位数字代码,由RFC 2616规范定义。 合理的状态码不仅可以让用户或者浏览器做出更加合适的进一步操作(例如继续发送请求、切换协议,重定向跳转等),而且可以让客户端代码更加易于理解和维护 。
RFC 把状态码分成五类,分别是:
- 1××: 请求已被接受正被处理,表示目前是协议处理的中间状态,还需要后续的操作
- 2××: 请求成功处理,报文已经收到并被正确处理
- 3××: 代表需要客户端采取进一步的操作才能完成请求,例如重定向,通常,这些状态码用来重定向,后续的请求地址(重定向目标)在本次响应的Location域中指明
- 4××: 客户端错误,请求报文有误,服务器无法处理
- 5××: 服务器错误,服务器在处理请求时内部发生了错误
常见状态码有哪些
1xx
1xx 是很陌生的,代表请求已被接受,需要继续处理。这类响应是临时响应,标示客户应该等待服务器采取进一步行动。
我们最常见的是 101(Switching Protocols)
101(Switching Protocols)
服务器已经理解了客户端的请求,并根据 Upgrade 消息头切换协议。
在 http header怎么判断协议是不是websocket 我们提到过,http 发送请求给服务器,