javascript - 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 秒。因此,我试图弄清楚为什么时间戳差异超过一秒。
很难重现,但每当发生这种情况时我都会记录下来,这就是我注意到问题的方式。关于为什么会发生这种情况的任何想法?
解决方案
推荐阅读
- node.js - 快递服务器收到 AWS AccessDeniedException,但 AWS CLI 有效
- python - 计算具有后继元素数量的最佳方法
- python - 为 rpy2 kwargs 提供布尔值
- mysql - 在 Raspbian 上使用 MySQL 而不是 MariaDB
- javascript - 有没有更简单的方法来进行单行尝试而不用捕获?
- c++ - 如何在不注册对象的情况下访问 StandardItemModel 的数据?
- java - 捕获标志错误:无法找到或加载主类 Espresso
- package - Artifactory 未能找到 Chocolatey 包
- javascript - 静态文件 django 频道
- http - 如何将带有 IP 地址的 HTTP URL 重定向到带有域名的 HTTPS URL?