请求成功时,返回的是200,那么返回的304是什么意思呢?

如上图,200和304有什么区别呢?

看下http的响应头:

刷新一次,对比下

这次请求的头信息中多了一条If-Modified-Since,而且返回的响应中,状态变为了304,这是怎么回事?

这次请求的头信息中多了一条If-Modified-Since,而且返回的响应中,状态变为了304,这是怎么回事?还记得红薯那篇文章页中的304么,你会发现,304多出现在对于静态资源的请求上面。

原来对于静态资源来说:

  1. 当浏览器第一次发起请求时(请求头中没有If-Modified-Since),server会在响应中告诉浏览器这个资源最后修改的时间(响应头中的Last-Modified)。(见上图)

  2. 浏览器也很聪明,当你再次(点击链接,或者F5,或者回车,但是不能是ctrl+F5)请求这个资源时,浏览器会询问server这个资源自上次告诉我的最后修改时间以来有没有被修改(请求头中If-Modified-Since)。(见上图)

  3. 如果资源没有被修改,server返回304状态码,并不会再次将资源发送给浏览器,浏览器则很知趣的使用本地的缓存文件。(见上图)

所以所有的静态资源如果没有发生变化,通常是不会传递多次的,不管什么浏览器或者server都应该遵守这种询问的约定。看起来很爽啊,很智能是不是?这种约定的机制就是 http缓存协商——这是约定优于配置的又一体现。

我们在写httpservlet时也会遇到类似的情况,如果你重写getLastModified这个方法的话,也会出现304的

 @Overrideprotected long getLastModified(HttpServletRequest req) {/*** 这里你要自己决定动态内容的最后修改时间,例如你可以返回* -- 数据缓存最后更新的时间* -- 简单起见,我们假设最后的修改时间是 1000*/return 1000;}

http请求时返回的304是干什么的相关推荐

  1. AJAX请求时status返回状态明细表 readyState的五种状态

    为什么80%的码农都做不了架构师?>>>    在<Pragmatic Ajax A Web 2.0 Primer >中偶然看到对readyStae状态的介绍,感觉这个介 ...

  2. java http 302_java中httpclent以post方式提交请求时,http返回码是302重定向时,不自动跳转的处理...

    场景: 接口A:请求地址为http://www.test.com/test 接口A的功能,会把接收到的参数url写入到header的Location属性中 在java中,使用httpclient发送请 ...

  3. ajax请求,返回值为304 Not Modified 错误原因与解决办法

    先说原因吧,这是因为http请求的缓存问题引起的 前后调用了两个相同的请求,服务器懒得给你重新发一个请求,所以就304咯 那怎么办呢? 解决方法也很简单,加一个时间戳就行了 比如: 原请求为: $.g ...

  4. HTTP协议请求中返回的各个状态码对应的状态信息

    200 – 服务器成功返回网页 404 – 请求的网页不存在 503 – 服务不可用 所有状态解释:点击查看 1xx(临时响应) 表示临时响应并需要请求者继续执行操作的状态代码. www.2cto.c ...

  5. http请求时常返回的状态码

    1.http状态码分类:   已定义范围 分类 1XX 100-101 信息提示 2XX 200-206 成功 3XX 300-305 重定向 4XX 400-415 客户端错误 5XX 500-50 ...

  6. 服务器无效响应状态码12029,使用wininet发送http请求时出现12029无法与服务器建立连接...

    使用winiet开发http请求的时候出现 12029无法与服务器建立连接  找啦很长时间才找到的错误. 错误描述: 请求如下地址: http://www.xxx.com:8888 返回12029错误 ...

  7. fiddler使用AutoResponder更改请求的返回结果

    背景: fiddler本身提供了断点,可以修改请求参数和返回结果来达到某种测试需要,但由于超时时间很短,一般在几秒之内,而在这么短时间内往往还没有手动修改完,请求已经超时导致无法模拟请求. fiddl ...

  8. python Flask框架如何请求及返回数据——flask详细教程

    python Flask框架如何请求及返回数据--flask详细教程 文章目录: 1 Flask介绍 1.1 Flask简单介绍 1.2 Flask相关资料信息 2 Flask快速入门 2.1 Fla ...

  9. bug修复录-qq浏览器中post请求时body为空

    近期项目中遇到一个bug,其中解决过程比较有意思,特此记录下来.有一天看到报警记录有一个500服务端的错误,量很少,一周都不一定有一个,先根据服务器里的本地日志拿到了当时请求的相关信息像UA.cook ...

最新文章

  1. linux 文件拷贝io,NIO拷贝文件真的比IO拷贝文件效率高?
  2. linux下好用的软件
  3. macos怎么pdf转换成word,妈妈再也不用担心我的mac了
  4. JD商家后台管理的细节
  5. 【产品能力深度解读】连续入围Gartner魔力象限的Quick BI有何魔力?
  6. Springboot在线电影系统实战开发
  7. jsp页面从session获取当前用户信息控制页面按钮是否显示
  8. mybatis foreach标签的使用
  9. 金蝶oracle用鼎信诺取数,取数软件 审计取数软件?
  10. 一文讲懂什么是vlan、三层交换机、网关、DNS、子网掩码、MAC地址
  11. 第四章 使用OpenCV探测来至运动的结构——Chapter 4:Exploring Structure from Motion Using OpenCV 标签: SFM3D重建 2015-01-15
  12. 土建中级工程师考试用书电子版_建筑工程中级职称考试试卷教学教材
  13. Matlab:风向玫瑰图,我也行
  14. 百度计算机视觉算法工程师面试题(秋招)
  15. 俄罗斯、乌克兰程序员薪资曝光!年薪 15w+,女程序员比男程序员收入高
  16. 加速PG中vacuum
  17. 为什么父类引用可以指向子类对象 子类引用不能指向父类对象 泛型
  18. veket linux能运行qq么,【veket系统】Veket Linux系统下载 v8.07 官方正式版-开心电玩...
  19. jenkins自动化_通过Jenkins自动化PSR合规性
  20. 【巧用自带清空内存命令 一键释放内存资源】

热门文章

  1. 计算机图形学算法总结
  2. matlab声音的滤波处理,MATLAB声音信号的采集与滤波处理
  3. Unity开发OpenXR | (二)使用 OpenXR 制作一款简单VR示例场景 的全过程详细教程,包含两个实战案例。
  4. 全国(省,直辖市,自治区,特别行政区)映射集合
  5. uboot的移植——移植uboot官方的uboot到x210开发板
  6. 英伟达Isaac介绍
  7. 图像处理——如何处理不同格式和深度的图像确保清晰度满足要求
  8. 自学Python之字符串总结
  9. Python爬虫笔记(3)- 爬取丁香园留言
  10. 虚拟机从路由器获取宽带拨号账号密码