是否可以在HTTP报头中动态更改报头数据?



我在工作中遇到了一个问题。我正在使用REST web服务获取一些客户数据,并在HTTP头和代码中发送客户id,将获取数据并返回结果。但是发生了一些不寻常的事情,客户id被动态地改变了,我得到了一个错误,没有客户找到。

例如:2个客户同时登录他们的帐户,并且两者都获取了一点不同的URI,例如客户c1正在获取:a/{b}/c,客户c2正在获取a/。两者都有唯一的会话和不同的客户id。

当c1调用URI a/{b}/c时,c1的报头被更改,c1的客户id变为c2(与c2 id更改),我们得到无效的客户id错误。

我们根本无法重现这个场景。这只发生过一次。

我想知道可能的原因,怎么可能动态更改客户id ?

如果是端到端的HTTPS连接,那么可以接受内容不可能被修改鉴于今天的计算能力

一些负载均衡器不检查流量和路由流量仅基于最小的信息(源IP,目标IP等)。

在负载平衡器上终止SSL连接,以便可以检查报头和其他内容以做出路由决定。有可能这种负载均衡器在您的情况下更改了客户id,可能是由于负载平衡器内存中的会话损坏。或者您的设置可能有一个反向代理。在终止SSL的路径上的任何计算机还可以更改客户id。

同样,端点您正在连接的自身可能在其会话中损坏了客户id,并且使用不正确的客户id回复给您。所有这些都会被认为是一个bug。

最新更新