2016-11-30 6 views
0

私はAngularJSのクライアント側アプリケーションを使用しており、日付と時刻を扱っています。私の問題は、ローカルシステムの誰かが変更することができるということです。これを保護するために、取得またはポストリクエストなしでサーバーの日付を使用したいと考えています。 JavaScriptを使用してサーバーの日付を取得する方法はありますか?JavaScriptを使用してサーバーの日付を取得する方法は?

+2

待つ。 JavaScriptはクライアント側の言語です。サーバー側に時間をフェッチするように「尋ねる」必要があります。接続と読み込み時間は、取得された時間の精度に影響する可能性があります。 – Raptor

+0

追加のajaxリクエストが必要です – YOU

+0

はい....ローディングは時間の精度に影響するかもしれません.... – abhimanyu

答えて

1

あなたはクライアント側でJavaScriptを実行している場合は、サーバー時間を見つけるための唯一の方法は、現在時間で何サーバーを尋ねるです。ここには魔法はありません。サーバーに要求する必要があります。

オプション:

  1. 使用AJAXまたはFetch
  2. HTMLページがサーバーでレンダリングされる場合は、ページレンダリング中に現在の時刻を書き込んでクライアントに送信できます。

してください、ネットワークの遅延のためにサーバーの正確な時間を持ってすることはできませんが、あなたはthis answerからコード(修正)を使用して、かなり近い得ることができることに注意してください。

var offset = 0; 
function calcOffset() { 
    var xmlhttp = new XMLHttpRequest(); 
    xmlhttp.open("GET", "https://stackoverflow.com/", false); 
    xmlhttp.send(); 

    var dateStr = xmlhttp.getResponseHeader('Date'); 
    var serverTimeMillisGMT = Date.parse(new Date(Date.parse(dateStr)).toUTCString()); 
    var localMillisUTC = Date.parse(new Date().toUTCString()); 

    offset = serverTimeMillisGMT - localMillisUTC; 
} 

function getServerTime() { 
    var date = new Date(); 

    date.setTime(date.getTime() + offset); 

    return date; 
} 
+0

ActiveX?WT .... – epascarello

+1

@epascarelloこれはちょうどAJAX呼び出しです。jQuery *おそらく*これは内部的にIEで行います。 –

+0

@codenoir XMLHttpRequestについて「少し」知っています – epascarello

関連する問題