Javascript獲取伺服器時間

lotus_ruan發表於2021-09-09
    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時就可以讀取響應頭拿到我們要的時間戳了。程式碼如下:

    到此,伺服器時間就取到了。其實響應頭裡面的資訊不僅僅有時間戳,可以使用xhr.getAllResponseHeaders()來獲取整個響應頭資訊,響應頭裡面還包括伺服器型別及版本號、請求的檔案型別及編碼等其他資訊(見下圖),都可以透過這種方式讀取。


圖片描述

(轉自古德God部落格園)

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/1762/viewspace-2798159/,如需轉載,請註明出處,否則將追究法律責任。

相關文章