Javascript擷取伺服器時間

來源:互聯網
上載者:User

標籤:

  Javascript是運行在用戶端的指令碼,我們一般都用new Date()來擷取目前時間,但是得到的是用戶端的時間,用戶端時間是隨意更改的,如果要做一個產品發布倒計時的話,用戶端時間一改,就要鬧笑話了。業務中需要用到伺服器時間的情境還有很多,那麼僅僅通過js怎麼拿到伺服器時間呢?事實上,只需要一個ajax請求就搞定,通過讀取XMLHttpRequest對象的要求標頭裡面的時間戳記得到當前伺服器時間

  原理就是這麼簡單:通過ajax向伺服器發送請求,當伺服器收到請求後即可讀取要求標頭的時間戳記了,不管請求成功或失敗,都可以拿到時間戳記。怎麼判斷伺服器收到請求了呢?當ajax請求發送之後,XMLHttpRequest有5中狀態變化:

XMLHttpRequest.readyState值 表示的意思
0 未初始化,已經建立一個XMLHttpRequest對象,但是還沒有初始化
1 未發送,代碼已經調用了xmlhttprequest open()方法並且xmlhttprequest已經準備好把一個請求發送到伺服器
2 已發送,已經通過send()方法把一個請求發送到伺服器端,但是還沒有收到一個響應,可以讀取要求標頭資訊了
3 正在接收,已經接收到http回應標頭部資訊,但是訊息體部分還沒有完全接收完畢
4 已載入,響應已經被完全接收

  通過監聽XMLHttpRequest的readystatechange事件來判斷當前處於哪種狀態,從表中可以看出,當XMLHttpRequest.readyState值為2時就可以讀取要求標頭拿到我們要的時間戳記了。代碼如下:

<p id="time"></p><script>ajax()  function ajax(option){    var xhr = null;    if(window.XMLHttpRequest){      xhr = new window.XMLHttpRequest();    }else{ // ie      xhr = new ActiveObject("Microsoft")    }    // 通過get的方式請求當前檔案    xhr.open("get","/");    xhr.send(null);    // 監聽請求狀態變化    xhr.onreadystatechange = function(){      var time = null,          curDate = null;      if(xhr.readyState===2){        // 擷取要求標頭裡的時間戳記        time = xhr.getResponseHeader("Date");        console.log(xhr.getAllResponseHeaders())        curDate = new Date(time);        document.getElementById("time").innerHTML = "伺服器時間是:"+curDate.getFullYear()+"-"+(curDate.getMonth()+1)+"-"+curDate.getDate()+" "+curDate.getHours()+":"+curDate.getMinutes()+":"+curDate.getSeconds();      }    }  }</script>

 

 

到此,伺服器時間就取到了。其實要求標頭裡面的資訊不僅僅有時間戳記,可以使用xhr.getAllResponseHeaders()來擷取整個要求標頭資訊,要求標頭裡面還包括伺服器類型及版本號碼、請求的檔案類型及編碼等其他資訊(見一),都可以通過這種方式讀取。為了證明擷取的確實是伺服器時間,我用手機測試了一下(見二),當前北京時間是2015年4月20日21:59,PC機時間我調成了2015年2月1日 21:16

圖一

圖二

 

本文地址:http://www.cnblogs.com/wangmeijian/p/4442830.html

轉載請保留出處!

Javascript擷取伺服器時間

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.