需求

由于系统需求变更,需要获取服务器时间;但是由于自己前端js业务代码大部分已经写好,可能懒得原因,不想在移到后台去重新写,所以导致出现了下面的踩坑状况...在此记录一下...

自己前端js获取服务器时间代码(有bug的代码):

 var yearmonth = new Date($.ajax({async: false}).getResponseHeader("Date"));//输出结果为:Wed May 22 2019 11:08:47 GMT+0800 (中国标准时间) {}

出现的问题

首先,说明一下,这个代码看起来是没有问题的,但是在不同浏览器情况下,比如IE浏览器就会出现这样的情况:

  var yearmonth = new Date($.ajax({async: false}).getResponseHeader("Date"));//输出结果为:Thu Jan 01 1970 08:00:00 GMT+0800 (中国标准时间) {}

是不是发现什么问题了,上一个结果是2019-05-22,而这一次结果是1970-01-01,这个是什么原因呢?下来我们来探讨一下

问题追踪

第一次出现这个状况是一位客户给我反应的这个问题,说他的日期一直显示1970-01,我说你关闭浏览器(带清缓存步骤),在重新打开试试,结果还是。然后我就懵了,赶紧回头去看代码,咦,代码没错啊!!然后就去找度娘问了半天,大致理出了点头绪。

实际上是这样的,归根结底是IE浏览器的缓存机制问题
下面来探讨一下过程!

这是正常请求时的状况:

注意看请求头与响应头!请求头是向后端发起了请求,并在响应头响应了信息,内部包含“Date”关键字!

出现1970-01时的异常状况:

注意看请求头与响应头!此时并没有向后端发起请求,此时是因为走了IE浏览器的缓存机制,所有响应头不准确,没有“Date”,所有方法没有获取到时间,就会走默认的1970-01-01

两者的比较:

从上图可以看出(正常的是第二个,异常是最后一个),异常的是走的IE浏览器的缓存机制,而正常的是走的http请求,所以问题就很清晰了。

结论

其实出现1970-01这个问题最终是浏览器的兼容问题,由于IE浏览器的缓存机制,导致请求头没有请求到,所以返回计算机的默认时间1970-01

解决办法

将js代码可以修改为:

    var yearmonth = new Date($.ajax({type:"HEAD",async:false,cache:false}).getResponseHeader("Date"));

相当于关闭浏览器的缓存,而加入type:"HEAD"是为了请求更快,默认为请求头

js 获取服务器时间——IE浏览器出现1970问题相关推荐

  1. 抢购网站服务器时间表,js获取服务器时间,实现抢购倒计时

    商品抢购倒计时,涉及到一个问题,就是时间的准确性,如果使用本地手机或者电脑的时间,就会存在时间不准以及误差,并且还有时区问题 解决方法:使用服务器的时间 困难:但是我们不能每秒钟请求一次服务器,这肯定 ...

  2. js取服务器系统时间,JS中new Date()用法及获取服务器时间

    1.获取服务器时间: var now = new Date($.ajax({async: false}).getResponseHeader("Date")); 2.new Dat ...

  3. js指定服务器时间戳,js获取服务器时间戳

    ajax // 方法一 ajax('/', function (data, obj) { alert(obj.getResponseHeader("Date")); }); // ...

  4. js网站服务器时间,js获取本地时间、服务器时间、记时

    js获取本地时间.服务器时间.倒计时 untitled get=function (id){return document.getElementById(id)} if(document.all){ ...

  5. js 实时显示服务器时间,js获取服务器实时时间

    本文主要和大家分享js获取服务器实时时间,主要以代码的方法和大家分享,希望能帮助到大家. AJAX获取服务器时间 /* * ajax 函数,处理 ajax 请求 * @param function c ...

  6. JS获取当前日期时间并定时刷新

    JS获取当前日期时间 var date = new Date(); date.getYear(); //获取当前年份(2位) date.getFullYear(); //获取完整的年份(4位,2014 ...

  7. JSP 获得服务器时间和浏览器时间

    发布项目到服务器并访问 创建Web项目,开发静态页面 部署到服务器Tomcat 启动服务器Tomcat 不同用户通过浏览器来访问Web项目 Web项目和Java项目的区别 Web项目需要JavaEE的 ...

  8. php js动态显示系统时间,PHP+JS动态显示服务器时间

    摘要:JS默认只能获取当前系统时间,若想获取服务器时间,必须加上后端语言配合,PHP+JS获取服务器端时间代码:运行结果:2017-4-4 15:... JS默认只能获取当前系统时间,若想获取服务器时 ...

  9. Js获取当前日期时间及其它操作(转)

    Js获取当前日期时间及其它操作 var myDate = new Date(); myDate.getYear();        //获取当前年份(2位) myDate.getFullYear(); ...

  10. Python表示不甘心,汤姆大叔送书,Python抢书之毫秒级跟进--获取服务器时间

    @鲜宏大牛果断使用js将抢书的误差提高到毫秒级, wid表示真心的很佩服鲜宏大牛! wid的水平虽说不怎么样, 但内心说, wid也想尝试着将抢书的误差提高到毫秒级, 思考了一会, 还真有思路了! 现 ...

最新文章

  1. 网页图表Highcharts实践教程之认识Highcharts
  2. python io流a+_Python基础——文件操作及IO流
  3. mseq matlab,Matlab生成M序列
  4. PL/SQL Developer 9 注册机
  5. 阿里实习 电面,面试
  6. MySQL必知必会:数据插入(Insert)
  7. 拓端tecdat|在RapidMiner中建立决策树模型
  8. android map 底层实现原理,LinkedHashMap底层实现和原理(源码解析)
  9. php使用到的函数记录一
  10. 驱动精灵扩展版(集成万能网卡驱动)无法自动识别网卡的解决方案
  11. html制作古诗网页早发白帝城,《早发白帝城》古诗词
  12. java计算机毕业设计的小区物业管理系统源程序+mysql+系统+lw文档+远程调试java计算机毕业设计的小区物业管理系统源程序+mysql+系统+lw文档+
  13. table固定列html5,css+js简单实现table固定首行首列
  14. 赵栋201771010137《面向对象程序设计(java)》第七周学习总结
  15. 微信图片服务器逻辑,微信小程序[第八篇] -- 实现完整的相册列表逻辑(小程序端服务器端)...
  16. thymeleaf的maven依赖
  17. Redis_保存数据时报错MISCONF Redis is configured to save RDB snapshots, but it is curren
  18. 关于 office 即点即用 和 Window Install 和 Project 安装心得
  19. 16代表啥_出道12年33岁当选,新晋金鹰女神,宋茜比几位前任女神差了啥
  20. 2021年中国超融合十大趋势

热门文章

  1. 佛说爱情二:前生500次的回眸才换得今生的一次擦肩而过
  2. RTC月度小报5月 |教育aPaaS灵动课堂升级、抢先体验VUE版 Agora Web SDK、声网Agora与HTC达成合作
  3. C# 通用分页用户控件
  4. overflow属性 white-space属性 文本溢出 英文单词转换方式
  5. Ubuntu16.0微信安装
  6. Eclipse设置运行内存大小
  7. 算法题_寻找最大连通区域
  8. YOLO v3源码详解
  9. 新浪财经独家对话达利欧:桥水员工离职率曾高达30%
  10. 前端项目没数据?教你抓取各大网站api