这是个挺常见的问题,一般碰到什么码没见过直接搜就行。
总共有五类:
-
1xx:第一类提示信息:表示目前是协议处理的中间状态,还需要后续的操作;
例如:POST发送的第一个包就是等服务器返回1xx响应表示POST可以继续发送数据。 -
2xx:成功,报文已经收到且处理掉了
[200 OK]: 最想看到的就是这个,表示一切正常。
[204 NO Content]: 响应时没有body数据。
[206 Partial Content]:说明此时 HTTP是分块下载或断点续传,表示响应返回的body数据并不是资源的全部。 -
3xx: 资源重定向
[301 Moved Permanentl] :永久重定向,说明请求的资源已经不在了,客户端需要用新的URL去访问。
[302 FOUND]:对比301,它是临时重定向,说明请求的资源还在,但暂时需要⽤另⼀个 URL 来访问。
对于301和302都会在响应头里用字段Location指明后续要跳转的URL,浏览器会自动重定向新的URL。
[304 Not Modified]: 不具有跳转的含义,表示资源未修改,重定向已存在的缓冲⽂件,也称缓存重定向,⽤于缓存控制。
304上次缓存的资源没有改变------浏览器如何知道是否直接接取缓存的内容?
需要判断请求头 响应头
请求头字段:
if-None-Match : 匹配etag 如果它修改了, 不取缓存
if-Modified-Since : 将先前服务器端发过来的最后修改时间戳发送回去
响应头字段:
etag :标记图片资源
last-Modified:(服务器最后修改的时间) 和 etag配合使用
etag和if-Node-Match的工作原理是在HTTP Response中添加Etags信息,当客户端再次请求该资源时,将在HTTP Request中加入if-None-Match信息(Etags的值)。如果服务器验证资源的etag没有改变,将返回一个304状态,否则,服务器将返回200状态,并返回该资源和新的Etags。
-
4xx:表示客户端发送的报⽂有误,服务器⽆法处理,也就是错误码的含义。
「400 Bad Request」表示客户端请求的报⽂有错误,但只是个笼统的错误。
「403 Forbidden」表示服务器禁⽌访问资源,并不是客户端的请求出错。
「404 Not Found」表示请求的资源在服务器上不存在或未找到,所以⽆法提供给客户端。经常看到的就是这个。 -
5xx:与4xx对比,这是服务器自身的错误。
「500 Internal Server Error」与 400 类型,是个笼统通⽤的错误码,服务器发⽣了什么错误,我们并不知道。
「501 Not Implemented」表示客户端请求的功能还不⽀持,类似“即将开业,敬请期待”的意思。
「502 Bad Gateway」通常是服务器作为⽹关或代理时返回的错误码,表示服务器⾃身⼯作正常,访问后端服务器发⽣了错误。
「503 Service Unavailable」表示服务器当前很忙,暂时⽆法响应服务器,类似“⽹络服务正忙,请稍后重试”的意思。