js 获取服务器时间——IE浏览器出现1970问题
需求
由于系统需求变更,需要获取服务器时间;但是由于自己前端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问题相关推荐
- 抢购网站服务器时间表,js获取服务器时间,实现抢购倒计时
商品抢购倒计时,涉及到一个问题,就是时间的准确性,如果使用本地手机或者电脑的时间,就会存在时间不准以及误差,并且还有时区问题 解决方法:使用服务器的时间 困难:但是我们不能每秒钟请求一次服务器,这肯定 ...
- js取服务器系统时间,JS中new Date()用法及获取服务器时间
1.获取服务器时间: var now = new Date($.ajax({async: false}).getResponseHeader("Date")); 2.new Dat ...
- js指定服务器时间戳,js获取服务器时间戳
ajax // 方法一 ajax('/', function (data, obj) { alert(obj.getResponseHeader("Date")); }); // ...
- js网站服务器时间,js获取本地时间、服务器时间、记时
js获取本地时间.服务器时间.倒计时 untitled get=function (id){return document.getElementById(id)} if(document.all){ ...
- js 实时显示服务器时间,js获取服务器实时时间
本文主要和大家分享js获取服务器实时时间,主要以代码的方法和大家分享,希望能帮助到大家. AJAX获取服务器时间 /* * ajax 函数,处理 ajax 请求 * @param function c ...
- JS获取当前日期时间并定时刷新
JS获取当前日期时间 var date = new Date(); date.getYear(); //获取当前年份(2位) date.getFullYear(); //获取完整的年份(4位,2014 ...
- JSP 获得服务器时间和浏览器时间
发布项目到服务器并访问 创建Web项目,开发静态页面 部署到服务器Tomcat 启动服务器Tomcat 不同用户通过浏览器来访问Web项目 Web项目和Java项目的区别 Web项目需要JavaEE的 ...
- php js动态显示系统时间,PHP+JS动态显示服务器时间
摘要:JS默认只能获取当前系统时间,若想获取服务器时间,必须加上后端语言配合,PHP+JS获取服务器端时间代码:运行结果:2017-4-4 15:... JS默认只能获取当前系统时间,若想获取服务器时 ...
- Js获取当前日期时间及其它操作(转)
Js获取当前日期时间及其它操作 var myDate = new Date(); myDate.getYear(); //获取当前年份(2位) myDate.getFullYear(); ...
- Python表示不甘心,汤姆大叔送书,Python抢书之毫秒级跟进--获取服务器时间
@鲜宏大牛果断使用js将抢书的误差提高到毫秒级, wid表示真心的很佩服鲜宏大牛! wid的水平虽说不怎么样, 但内心说, wid也想尝试着将抢书的误差提高到毫秒级, 思考了一会, 还真有思路了! 现 ...
最新文章
- 网页图表Highcharts实践教程之认识Highcharts
- python io流a+_Python基础——文件操作及IO流
- mseq matlab,Matlab生成M序列
- PL/SQL Developer 9 注册机
- 阿里实习 电面,面试
- MySQL必知必会:数据插入(Insert)
- 拓端tecdat|在RapidMiner中建立决策树模型
- android map 底层实现原理,LinkedHashMap底层实现和原理(源码解析)
- php使用到的函数记录一
- 驱动精灵扩展版(集成万能网卡驱动)无法自动识别网卡的解决方案
- html制作古诗网页早发白帝城,《早发白帝城》古诗词
- java计算机毕业设计的小区物业管理系统源程序+mysql+系统+lw文档+远程调试java计算机毕业设计的小区物业管理系统源程序+mysql+系统+lw文档+
- table固定列html5,css+js简单实现table固定首行首列
- 赵栋201771010137《面向对象程序设计(java)》第七周学习总结
- 微信图片服务器逻辑,微信小程序[第八篇] -- 实现完整的相册列表逻辑(小程序端服务器端)...
- thymeleaf的maven依赖
- Redis_保存数据时报错MISCONF Redis is configured to save RDB snapshots, but it is curren
- 关于 office 即点即用 和 Window Install 和 Project 安装心得
- 16代表啥_出道12年33岁当选,新晋金鹰女神,宋茜比几位前任女神差了啥
- 2021年中国超融合十大趋势