我有一个面向互联网的服务,通过https提供API – json,xml等 – 像https://api.example.org/api/foo 。 API通常是由公司内部服务构build的,但即使我们向外部基于互联网的服务提出请求,我也希望它们以客户身份出现在我的服务中。
从User-Agent的angular度来看, https://api.example.org是Origin服务器。
我们已经买了一个奇特的供应商API网关产品来保护这些API。 到现在为止还挺好。
目前,网关正在将Via头附加到包含处理请求的服务器的内部主机名的请求上,这不是那么好。
> GET /api/foo/bar HTTP/1.1 > User-Agent: curl/7.37.1 > Host: api.example.org > Accept: */* > < HTTP/1.1 200 OK < Content-Type: application/json < Date: Thu, 15 Mar 2015 22:11:46 GMT < Max-Forwards: 20 * Server Apache-Coyote/1.1 is not blacklisted < Server: Apache-Coyote/1.1 < Via: 1.0 myinternalhostname.local (Apache-Coyote/1.1) < transfer-encoding: chunked < Connection: keep-alive
他们是否可以使用它,我不想让机器人和坏人知道我的主机名。
我可以删除Via标题,还是应该将其清除为公共名称,例如
< Via: 1.0 api.example.org (Apache-Coyote/1.1)
我知道为什么Via头存在,我不认为我的api服务器需要符合RFC,因为它作为一个原始服务器。 (即使实际上它是一个网关/反向代理,客户端不需要知道这一点)。
TL; DR
从源服务器上移除Via头是否安全?
Via标题旨在将责任推给别人。
如果没有达到这个目的,删除或者不生成是完全可以接受的。