首页 > 解决方案 > Javascript 前端和 Python 后端之间的计时器延迟故障排除

问题描述

我有一个 JS 前端应用程序对 Python 后端 API 进行 API 调用。为了对抗重放攻击,来自前端应用程序的每个 HTTP 请求都有一个带有请求时间的标头(从纪元开始以毫秒为单位)。

headers['request-epoch'] = Date.now()

Python 后端也计算它自己的当前时间(从纪元开始的秒数):

dt = datetime.datetime.utcnow()
seconds_from_epoch = int((dt - datetime.datetime.utcfromtimestamp(0)).total_seconds())

然后它比较差异:

request_timestamp = self.request.headers.get('request-timestamp', 0)
request_seconds_from_epoch = int(request_timestamp) / 1000
seconds_elapsed = abs(seconds_from_epoch - request_seconds_from_epoch)

这是奇怪的事情:

有一段时间,seconds_elapsed超过60 秒,而我正在测试前端。前端的交互不到一秒就返回,所以请求/响应肯定用不到 60 秒。因此,我试图弄清楚为什么时间戳差异超过一秒。

很难重现,但每当发生这种情况时我都会记录下来,这就是我注意到问题的方式。关于为什么会发生这种情况的任何想法?

标签: javascriptpythondate

解决方案


推荐阅读