让我们说我有一个从纽约运行的node.js服务器,我有一个客户端使用web brwoser从加利福尼亚连接到它。我可以合理地期望从客户端调用Date.now()来匹配从服务器上的node.js调用的Date.now()到~50-100毫秒内(假设它们在同一时刻被调用) ?从理论上讲,Date.now()应始终在机器和时区之间保持一致,因为Date.now()"返回自1970年1月1日00:00:00 UTC"以来经过的毫秒数。正确?
答案 0 :(得分:3)
不,您不一定认为客户端和服务器时间是同步的。
其中一个原因是Date.now()
基于用户操作系统的系统时间。你无法控制,时间可能正确,可能会有点甚至完全错误。
你可以自己试试:
> Date.now()
1466809144962
> Date.now()
1403650777388
我运行了Date.now()
两次,一次在Windows中设置了正确的时间。然后我将系统时钟的年份更改为2014并再次运行Date.now()
。
在没有服务器端验证的情况下,永远不要依赖用户控制的信息的正确性。