最近做项目,用了new Date().getTime()获取本地时间,但是如果用户篡改了手机时间,程序漏洞明显暴露。所以如果为保证程序的稳健安全性,应该是要使用网络时间的,也就是服务器时间。原理就是使用ajax时间,返回的头部信息里就含有服务端的时间信息,获取就可以了。
1,原生同步
function getServerDate(){ ???var xhr = null; ???if(window.XMLHttpRequest){ ?????xhr = new window.XMLHttpRequest(); ???}else{ // ie ?????xhr = new ActiveObject("Microsoft") ???} ???xhr.open("GET","/",false)//false不可变 ???xhr.send(null); ???var date = xhr.getResponseHeader("Date"); ???return new Date(date);}getServerDate();
2,原生异步
function getServerDate(){ ???var xhr = null; ???if(window.XMLHttpRequest){ ?????xhr = new window.XMLHttpRequest(); ???}else{ // ie ?????xhr = new ActiveObject("Microsoft") ???} ???xhr.open("GET","/",true); ???xhr.send(null); ???xhr.onreadystatechange=function(){ ???????var time,date; ???????if(xhr.readyState == 2){ ???????????time = xhr.getResponseHeader("Date"); ???????????date = new Date(time); ???????????console.log(date); ???????} ???}}
【完】
南无释迦牟尼菩萨 南无释迦牟尼菩萨 南无释迦牟尼菩萨
有关js的date的相关知识
原文地址:https://www.cnblogs.com/tangjiao/p/9448602.html