响应状态码该怎么用?

响应报文由响应头加响应体数据组成。
image.png
开头的Version是HTTP协议版本号,通常是HTTP1.1,用处不大。
后面Reason部分是原因短语,是状态的简短文字描述。例如OK,Not Found等,也可以自定义。
所以,状态行有用的就只剩下中间的状态码。它是一个十进制数字,以代码的形式表示服务器对请求的处理结果。需要注意的是,它的名字是状态码而不是错误码,它的含义不仅是错误码,更重要的意义在于表达HTTP数据的“状态”

状态码

目前RFC规范规定的状态是三位数,所以取值范围从000到999。
RFC规范把状态码分为五类,用数字第一位表示分类,而0-99不用,这样状态码的实际可用范围就大大缩小了,由000~999变成了100-599。
这五类具体的含义是:
1xx:提示信息
2xx:成功
3xx:重定向
4xx:客户端错误
5xx:服务端错误

1xx

1xx属于提示信息,是协议处理的中间状态,实际能用到时候很少。
偶尔能够见到的是"101 Switching Protocols" 。他的意思是客户端使用Upgrade头字段,要求在HTTP协议基础上改成其他协议继续通讯,比如"WebSocket"。

2xx

2xx类状态码表示服务器收到并成功处理了客户端的请求,这是客户端最愿意看到的状态码。
"200 OK"
"204 No Content"
"206 Partial Content"

3xx

3xx类状态码表示客户端请求的资源发生了变动,客户端必须使用新的URL重新发起请求获取资源,也就是我们通常说的重定向。
"301 Moved Permanently",俗称永久重定向
"302 Found",曾经短语"Moved Temporarily"俗称临时重定向
"304 Not Modified",用于If-Modified-Since等条件请求,表示资源未更改,用于缓存控制。

4xx

4xx类状态码表示客户端发送请求报文有误,服务器无法处理,它就是真正的“错误码”含义了。
"400 Bad Request"
"403 Forbidden"
"404 Not Found"

5xx

5xx表示客户端请求报文正确,但服务器在处理时内部发生了错误,无法返回应有的相应数据,是服务端的“错误码”。
"500 Internet Server Error"
"501 Not Implemented"
"502 Bad Getway"
"503 Server Unavailable", 503是一个临时状态,通常报文中还包含一个"Retry-After"字段,指示客户端多久以后再次尝试发送请求。

此文章为11月Day11学习笔记,内容来源于极客时间《透视HTTP协议》,以梦为马,11月进步💪💪

豪猪
4 声望4 粉丝

undefined