我已经在这个主题上进行了很多搜索,阅读了有关此标头的各种文章,其在Heroku中的用法以及基于Django的项目。
但是,这一切仍然让我困惑。
- 此标头的目的是什么?
- 是否侵犯了用户隐私?
- 它可以帮助跟踪用户吗?
Answers:
当您操作客户端访问的Web服务时,可能很难将请求(客户端可以看到)与服务器日志(服务器可以看到)相关联。
的想法X-Request-ID
是,客户端可以创建一些随机ID并将其传递给服务器。然后,服务器在其创建的每个日志语句中都包含该ID。如果客户端收到错误,则可以在错误报告中包含该ID,从而使服务器操作员可以查找相应的日志语句(而不必依赖时间戳,IP等)。
由于此ID由客户端(随机)生成,因此它不包含任何敏感信息,因此不应侵犯用户的隐私。由于每个请求都会创建一个唯一的ID,因此也无法帮助跟踪用户。
目的:幂等
对于每个请求,ID都会更改,但是在重试请求时,ID保持不变,接收方可以确保该请求不会被多次处理。
这是一些API提供程序的报价:
所有POST,PUT和PATCH HTTP请求都应包含唯一的X-Request-Id标头,该标头用于确保重试时进行幂等消息处理
如果您将其设为随机字符串(每个请求唯一),则不会侵犯您的隐私,也不会启用跟踪。
如果您想进一步了解幂等性,请阅读这篇有见地的文章。
注意:如StefanKögl所评论,此标头未标准化-因此(不赞成使用)“ X-”前缀。
您的互联网正在正常播放,所以您打电话给Tellstra,然后就一直在等待电话……最后,您沮丧地放弃了电话,摔了下来。(这是一个失败的呼叫。并且在Tellstra的呼叫日志中有记录。)
“就是这样,我叫监察专员!”
但是Obmudsman有成千上万的通话记录需要处理(Tellstra的所有失败查询)。如果您告诉他们您给Telstra打电话了,而您的电话却不成功,那还不够:监察专员如何从Tellstra的所有通话记录中知道您是哪一个,以便可以对其进行进一步调查? ?
这就是X-Request-ID的来源-每当您致电Tellstra时,您都将传递一个随机数(X-Request-ID),并将其记录在Tellstra记录中。这样,监察员(可以访问所有记录)将能够找到您的来电以找出问题所在。
这同样适用于http请求-它是一个ID,用于帮助您(作为后端开发人员)找出客户端向您提出错误或重大报告时出了什么问题。
这是它的基本摘要。任何问题等等,只需发表评论,我希望将其清除。