1:通过控制器获取服务器时间返回到前台正确显示(这是一种通用的方法,也是大家一般会直接想到的);
2:利用JS请求在 HTTP header 头里带一个Date的头部信息,用Ajax直接取头部信息里的Date就可获取服务器时间
原生写法:
var xhr = new XMLHttpRequest();
if( !xhr ){
xhr = new ActiveXObject("Microsoft.XMLHTTP");
}
xhr.open("HEAD",location.href,true);
xhr.onreadystatechange=function(){
if( xhr.readyState == 4 && xhr.status == 200 ){
alert(xhr.getResponseHeader("Date"));
}
}
xhr.send(null);
jquery写法
var time;
$.ajax({type:'HEAD', async: true})
.success(function(data, status, xhr){
time=xhr.getResponseHeader('Date');
});
PS:可能会有问了,ajax请求http这样的话 跟通过控制器获取服务器时间有啥区别么,同样要消耗一次请求,并且每次都会有服务器正文返回。
但是呢:常见的Ajax请求方法为GET,POST而这两种请求都可能会返回正文体,而发HEAD头则只会返回对应的头信息,不会有正文,且只要javascript可以执行,就可以取当前域的地址作为请求地址,有一定的通用性,且避免了跨域的问题