服务器返回状态码说明

常用状态码:

200:代表成功 

301 跳转

304 服务器端无变化 可使用缓存资源   (可判断一个文件(图片、js、css)是否有更新)

400 请求参数不合法

403 无权限访问  服务器端禁止访问该资源

404 文件找不到

405 Method 异常 (post get)

500 服务器异常

一、1xx:表示临时响应并需要请求者继续执行操作的状态代码。代码说明
100(继续):请求者应当继续提出请求。服务器返回此代码表示已收到请求的第一部分,正在等待其余部分。
101(切换协议):请求者已要求服务器切换协议,服务器已确认并准备切换。


二、2xx:表示成功处理了请求的状态代码。代码说明
200(成功):服务器已成功处理了请求。通常,这表示服务器提供了请求的网页。
201(已创建):请求成功并且服务器创建了新的资源。
202(已接受):服务器已接受请求,但尚未处理。
203(非授权信息):服务器已成功处理了请求,但返回的信息可能来自另一来源。
204(无内容):服务器成功处理了请求,但没有返回任何内容。
205(重置内容):服务器成功处理了请求,但没有返回任何内容。
206 (部分内容):服务器成功处理了部分 GET 请求。


三、3xx:表示要完成请求,需要进一步操作。通常,这些状态代码用来重定向。代码说明
300(多种选择):针对请求,服务器可执行多种操作。服务器可根据请求者(useragent)选择一项操作,或提供操作列表供请求者选择。
301(永久移动):请求的网页已永久移动到新位置。服务器返回此响应(对GET或HEAD请求的响应)时,会自动将请求者转到新位置。
302(临时移动):服务器目前从不同位置的网页响应请求,但请求者应继续使用原有位置来进行以后的请求。
303(查看其他位置):请求者应当对不同的位置使用单独的 GET 请求来检索响应时,服务器返回此代码。
304(未修改):自从上次请求后,请求的网页未修改过。服务器返回此响应时,不会返回网页内容。
305(使用代理):请求者只能使用代理访问请求的网页。如果服务器返回此响应,还表示请求者应使用代理。
307(临时重定向):服务器目前从不同位置的网页响应请求,但请求者应继续使用原有位置来进行以后的请求。


四、4xx:这些状态代码表示请求可能出错,妨碍了服务器的处理。代码说明
400(错误请求):服务器不理解请求的语法。
401(未授权):请求要求身份验证。对于需要登录的网页,服务器可能返回此响应。
403(禁止):服务器拒绝请求。
404(未找到):服务器找不到请求的网页。
405(方法禁用):禁用请求中指定的方法。
406(不接受):无法使用请求的内容特性响应请求的网页。
407(需要代理授权):此状态代码与 401(未授权)类似,但指定请求者应当授权使用代理。
408(请求超时):服务器等候请求时发生超时。
409(冲突):服务器在完成请求时发生冲突。服务器必须在响应中包含有关冲突的信息。
410(已删除):如果请求的资源已永久删除,服务器就会返回此响应。
411(需要有效长度):服务器不接受不含有效内容长度标头字段的请求。
412(未满足前提条件):服务器未满足请求者在请求中设置的其中一个前提条件。
413(请求实体过大):服务器无法处理请求,因为请求实体过大,超出服务器的处理能力。
414(请求的 URI 过长):请求的 URI(通常为网址)过长,服务器无法处理。
415(不支持的媒体类型):请求的格式不受请求页面的支持。
416(请求范围不符合要求):如果页面无法提供请求的范围,则服务器会返回此状态代码。
417(未满足期望值):服务器未满足"期望"请求标头字段的要求。


五、5xx:这些状态代码表示服务器在尝试处理请求时发生内部错误。这些错误可能是服务器本身的错误,而不是请求出错。代码说明
500(服务器内部错误):服务器遇到错误,无法完成请求。
501(尚未实施):服务器不具备完成请求的功能。例如,服务器无法识别请求方法时可能会返回此代码。
502(错误网关):服务器作为网关或代理,从上游服务器收到无效响应。
503(服务不可用):服务器目前无法使用(由于超载或停机维护)。通常,这只是暂时状态。
504(网关超时):服务器作为网关或代理,但是没有及时从上游服务器收到请求。
505(HTTP 版本不受支持):服务器不支持请求中所用的 HTTP 协议版本。

 

HTTP 304态码详细讲


304状态码或许不应该认为是一种错误,而是对客户端有缓存情况下服务端的一种响应。

整个求响应过程如下:


客户端在请求一个文件的时候,发现自己缓存的文件有 Last Modified ,那么在请求中会包含 If Modified Since ,这个时间就是缓存文件的 Last Modified 。因此,如果请求中包含 If Modified Since,就说明已经有缓存在客户端。服务端只要判断这个时间和当前请求的文件的修改时间就可以确定是返回 304 还是 200 。
对于静态文件,例如:CSS、图片,服务器会自动完成 Last Modified 和 If Modified Since 的比较,完成缓存或者更新。但是对于动态页面,就是动态产生的页面,往往没有包含 Last Modified 信息,这样浏览器、网关等都不会做缓存,也就是在每次请求的时候都完成一个 200 的请求。
因此,对于动态页面做缓存加速,首先要在 Response 的 HTTP Header 中增加 Last Modified 定义,其次根据 Request 中的 If Modified Since 和被请求内容的更新时间来返回 200 或者 304 。虽然在返回 304 的时候已经做了一次数据库查询,但是可以避免接下来更多的数据库查询,并且没有返回页面内容而只是一个 HTTP Header,从而大大的降低带宽的消耗,对于用户的感觉也是提高。当这些缓存有效的时候,通过 Fiddler 或HttpWatch 查看一个请求会得到这样的结果:


第一次访问 200
按F5刷新(第二次访问) 304
按Ctrl+F5强制刷新 200

下面用Fiddler来查看上面的访问请求过程

第一次(首次)访问 200


 

第二次F5刷新访问 304


请求的头信息里多了 “If-Modified-Since","If-None-Match" 
 


第三次 Ctrl+F5强制刷新 200同第一次,不贴图

  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值