我已经在 google 上搜索了很多关于这个主题的文章,阅读了很多关于这个标题的文章,它在 Heroku 的使用,以及基于 Django 的项目。
但是,我脑子里还是一片混乱。
当您操作一个由客户端访问的 Web 服务时,可能很难将请求(客户端可以看到)与服务器日志(服务器可以看到)关联起来。
X-Request-ID的思想是,客户机可以创建一些随机 ID 并将其传递给服务器。然后,服务器在其创建的每个日志语句中包含该 ID。如果客户端收到一个错误,它可以在 bug 报告中包含 ID,允许服务器操作员查找相应的日志语句(而不必依赖时间戳、 IP 等)。
X-Request-ID
由于这个 ID 是由客户机(随机)生成的,因此它不包含任何敏感信息,因此不应该侵犯用户的隐私。由于每个请求都会创建一个惟一的 ID,因此它也无助于跟踪用户。
此请求标头可用于同步。假设您已经构建了一个提供离线功能的 ToDo 列表。您的用户创建3个项,并且在脱机应用程序上为每个项分配一个惟一的 UUID。当网络连接可用时,将记录 POST 到服务器,并返回从数据库自动生成的相应 ID。然后您可以替换应用程序中的 ID (例如,HTML“ li”元素的“ id”属性)。
你可以把 X-Request-ID想象成你的驾照(某种身份证)。
想象一下访问 车管所:
浪费了整整一天——你向国会议员抱怨——嘿: 我排了16个小时的队。议员回答说:
“伙计,我们每天都有成千上万的人访问车管所——当我查看车管所记录时,我该如何识别你——当你来的时候,等等。?
这就是 X-Request-ID 的用武之地。
同样的道理也适用于 http 请求——它是一个用于帮助后端开发人员找出问题所在的 id。客户端使用这个 ID 提交请求——这是他们创建的一个 ID (即一些随机数等)。现在服务器可以跟踪它。
故事是用来帮助你回忆的。希望你不要再困惑了-如果我有的话,发表一个评论,我会试着把它弄清楚。谢谢。
用途: 阳痿
对于每个请求都会更改的 ID,但是在请求重试的情况下保持不变,接收方可以确保请求不会被处理多次。
下面是一些 API 提供商的一句话:
所有 POST、 PUT 和 PATCHHTTP 请求都应该包含唯一的 用于确保等幂消息的 X-Request-Id 头 在重试的情况下处理
如果你的 使它成为一个随机字符串,每个请求都是唯一的,它不会侵犯你的隐私,也不会启用跟踪。
如果你想知道更多关于幂等函数的内容,请阅读 这篇有见地的文章。
注意: 正如 Stefan Kögl 评论的那样,这个头部是不标准化的——因此使用了(不推荐的)“ X-”前缀。