什么是X-REQUEST-ID http标头?

时间:2014-08-21 18:14:45

标签: http http-headers

我已经搜索了很多这个主题,阅读了有关此标题的各种文章,它在Heroku上的使用或基于Django的项目。

然而,它仍然让我感到困惑。

  • 此标题的目的是什么?
  • 是否侵犯了用户隐私?
  • 它可以帮助跟踪用户吗?

4 个答案:

答案 0 :(得分:113)

当您运行客户端访问的Web服务时,可能很难将请求(客户端可以看到)与服务器日志(服务器可以看到)相关联。

X-Request-ID的想法是客户端可以创建一些随机ID并将其传递给服务器。然后,服务器在其创建的每个日志语句中包含该ID。如果客户端收到错误,它可以在错误报告中包含该ID,允许服务器操作员查找相应的日志语句(无需依赖时间戳,IP等)。

由于此ID由客户端(随机)生成,因此不包含任何敏感信息,因此不应违反用户的隐私。由于每个请求都会创建一个唯一ID,因此跟踪用户也无济于事。

答案 1 :(得分:5)

目的:幂等

对于每个请求,ID都会改变,但是在重试请求时,ID保持不变,接收方可以确保对请求的处理不会超过一次。

这是一些API提供商的报价:

  

所有POST,PUT和PATCH HTTP请求均应包含唯一的   X-Request-Id标头,用于确保幂等消息   重试时进行处理

如果您将其设为随机字符串(每个请求唯一),则它不会侵犯您的隐私,也不会启用跟踪。

如果您想进一步了解幂等性,请阅读this insightful article

答案 2 :(得分:2)

使用故事/类比的解释

你的互联网正在播放(像往常一样),所以你打电话给Tellstra,你在等电话永远......最后你放弃了,沮丧地砰地一声关上电话。 (这是一个失败的电话。在Tellstra的通话记录中有记录。)

“就是这样,我打电话给申诉专员!”

但是Obmudsman有成千上万的通话记录(Tellstra的所有失败查询)。如果你告诉他们你打电话给Telstra,并且你的电话不成功,那还不够: 监察员如何知道,从Tellstra的所有电话记录中知道哪一个是你的 - 这样它可以进一步研究??

这就是X-Request-ID的来源 - 当你调用Tellstra时,你会传递一个随机数(X-Request-ID),这会记录在Tellstra记录中。这样,监察员(可以访问所有记录)将能够找到您的来电,以找出问题所在。

将故事应用于HTTP

这同样适用于http请求 - 它是一个用于帮助您(作为后端开发人员)查找客户端向您发送错误或大报告时出错的ID。

这是它的基本概要。任何问题等只是发表评论,我希望将其清除。

答案 3 :(得分:-9)

此请求标头可用于同步。我们假设您已经构建了一个提供离线功能的待办事项列表。您的用户创建了3个项目,并且每个项目都在脱机应用程序上获得了唯一的UUID。当网络连接可用时,将记录发布到服务器,并返回从数据库自动生成的相应ID。然后,您可以替换应用中的ID(例如" ID" HTML属性" li"元素)。