js 是客户端执行的,所以,js的一切关于时间的函数,如 Date.now() 都是以客户端为准的。
但是如果客户端的时间跟网络时间不一致,对有些对时间依赖度较高的项目来说,可能就是致命性的问题,这种情况下,就不能简单的使用客户端的时间,而是要获取服务器时间以保证项目的正常运行。接下来说下 js 如何获取服务器时间。
原理:使用 ajax请求,返回的头部信息就含有服务器端的时间信息,获取到就可以了,如图:
实现:
// 同步获取
function getServerDate(){
var xhr = null;
if(window.XMLHttpRequest){
xhr = new window.XMLHttpRequest();
}
else{ // ie
xhr = new ActiveObject("Microsoft")
}
xhr.open("GET","/",false);
xhr.send(null);
var date = xhr.getResponseHeader("Date");
console.log(date);
var timestamp = parseInt(new Date(date).getTime()/1000);
console.log(timestamp)
return timestamp;
}
// 异步获取
function getServerDateAsync(){
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(){
if(xhr.readyState == 2){
var time = xhr.getResponseHeader("Date");
var date = new Date(time);
console.log(date);
}
}
}
来源:CSDN
作者:何必诗债换酒钱
链接:https://blog.csdn.net/u014395524/article/details/103242124