常见的HTTP状态码详细解析

http状态码分为五类 :

  1XX  信息     服务器收到请求,需要请求者继续操作

  2XX  成功    请求被成功接手并返回给请求者

  3XX  重定向   需要进一步操作才能完成请求

  4XX  客户端错误 请求包含语法错误,或无法完成请求

  5XX  服务端错误 服务端在处理请求过程发生了错误   

  

  200是请求成功,并向客户端成功返回 

  301、302、307的区别?

  301是永久移动   请求的资源被永久的移动到新的URL上,返回的信息包含了新URL,浏览器保存新URL。

  302是临时移动   请求的资源临时的移动到新URL上,客户端仍使用旧URL,浏览器也会保存旧到URL。(可能发生网址劫持)

  307是临时重定向  与302类似,但若为post请求,客户端要向首部location里的URI重新发起POST请求。

  303是查看其他地址  若为post请求,明确表示要用GET请求首部location里的URI

  304是请求资源未被修改  客户端发送附带条件的请求时,服务端允许请求访问资源,但因请求不满足条件,重定向直接使用客户端缓存的资源

  200、304的区别?

  200 (from cache)是强制缓存,直接从缓存里取资源,与服务器无交流。

  304(not modified)是协商缓存,请求资源中附带条件,服务器校验条件是否满足,不满足再拿客户端缓存的资源。

  强制缓存判断cache-control是否过期,协商缓存先判断Etag在判断Last-Modified,最终决定是否拿缓存中的。

  400是请求报文中出现错误

  401是请求需要认证

  403是请求被服务端拒绝

  404是请求资源在服务端找不到

  500是服务端出现错误

  503是服务器处于超负载或者停机维护状态

  504是连接超时