开发总是离不开状态码的啦~这里整理一下,仅作个人笔记。
http状态码是表示服务器对请求的响应状态
归类
1:这类响应是临时响应,只包含状态行和某些可选的响应头信息,并以空行结束
2:表示请求成功
3:表示重定向
4:表示客户端错误
5**:表示服务器端错误
详细的
100(continue),客户端应当继续发送请求。这个临时响应是用来通知客户端它的部分请求已经被服务器接收
101(Switching Protocols)切换协议。服务器根据客户端的请求切换协议。只能切换到更高级的协议,例如,切换到HTTP的新版本协议
200(OK),表示请求成功,请求所希望的响应头或数据体将随此响应返回。
202(Accepted),服务器已接受请求,但尚未处理。
203 (Non-Authoritative Information)非授权信息。请求成功。但返回的meta信息不在原始的服务器,而是一个副本
204(No-Content),服务器成功处理了请求,但不需要返回任何实体内容
205(Reset-Content),服务器成功处理了请求,且没有返回任何内容。但是与204响应不同,返回此状态码的响应要求请求者重置文档视图。该响应主要是被用于接受用户输入后,立即重置表单,以便用户能够轻松地开始另一次输入。
206(Partial-Content),服务器已经成功处理了部分 GET 请求。
301(Moved-Permanently),永久性重定向
302(Moved-Temporarily),暂时性重定向
304(Not-Modified),浏览器端缓存的资源依然有效
305 Use Proxy 使用代理。所请求的资源必须通过代理访问
306 Unused 已经被废弃的HTTP状态码
307 Temporary Redirect 临时重定向。与302类似。使用GET请求重定向
400(Bad-Reques),请求有误,当前请求无法被服务器理解。
401(Unauthorized),当前请求需要用户验证。
403(Forbidden),服务器已经理解请求,但是拒绝执行它。
404(Not-Found),请求的资源没有被找到
405 Method Not Allowed 客户端请求中的方法被禁止
406 Not Acceptable 服务器无法根据客户端请求的内容特性完成请求
500(Interval Server Error),服务器内部错误
502(Bad GateWay),网关出错
503(Service Unavailable),由于临时的服务器维护或者过载,服务器当前无法处理请求。
504(Gateway Timeout),作为网关或者代理工作的服务器尝试执行请求时,未能及时从上游服务器(URI标识出的服务器,例如HTTP、FTP、LDAP)或者辅助服务器(例如DNS)收到响应。
常用的需要记一下的状态码:
200 OK 服务器成功处理了请求(这个是我们见到最多的)
304 Not Modified:服务端的资源与客户端上一次请求的一致,不需要重新传输,客户端使用本地缓存的即可
400 Bad Request:用于告诉客户端它发送了一个错误的请求
404 Not Found(页面丢失)未找到资源
500 Internal Server Error:服务器内部出现了错误
501 Internal Server Error服务器遇到一个错误,使其无法对请求提供服务。
关于304和浏览器缓存:
浏览器的资源请求,如果使用了缓存基本上是两种情况
status code: 200 ok ( from cache )
status code: 304 Not Modified
第一种方式是不向浏览器发送请求,直接使用本地缓存文件。第二种方式,浏览器虽然发现了本地有该资源的缓存,但是不确定是否是最新的,于是想服务器询问,若服务器认为浏览器的缓存版本还可用,那么便会返回304。
这样做下来,会执行一次304请求,执行一次200请求,为了减少请求次数,可以选择设置缓存。
有几种方法。
一种是仅在Cache-Control设置max-age。
例如Cache-control: max-age=1800表明cache的时间是30分钟,只使用这样一个声明就可以使浏览器能够将这个HTTP响应的内容写入临时目录做cache。
浏览器第一次请求某资源,查询文件目录没有该cache内容,于是发送请求到服务器,服务器接受请求发送资源的同时设置max-age的时间。第二次请求时检查时间,如果没有过期,就直接调用cache缓存的资源。
还有一种是设置max-age和Last-Modified。
发送请求时检查到有缓存,这时去检查max-age,如果还没过期,则使用缓存内容。
如果过期了,那么检查发现资源带有Last-Modified,于是在请求包中带上If-Modified-Since发送给服务器,服务器于是对比资源最新修改的时间与请求的时间,如果资源被修改的时间比请求包的时间新,那么说明资源已经更新,重新发送新的资源给客户端,状态200.反之告诉请求的客户端:我这没变,你继续用缓存。