Web applications 如何从web应用程序检测客户端使用http代理-为什么缺少XFF头?

Web applications 如何从web应用程序检测客户端使用http代理-为什么缺少XFF头?,web-applications,tomcat,proxy,http-headers,Web Applications,Tomcat,Proxy,Http Headers,我试图从web应用程序中发现客户端是否使用透明代理。理论上应该很简单:只需检查XFF(x-forwarder-for)头是否存在。但由于一些未知的原因,这根本不起作用 我在通过公司透明代理连接到互联网的办公室工作。如果我进入任何“ip代理检查”页面,例如,它会显示来自我们代理的X-forwarded-for标头。所以,我理解,我们的公司代理正确地设置了这个标题。但是,当我连接到我们的web应用程序(在Tomcat上运行,在一些公共的外部服务器上),并且在我的webapp中列出所有HTTP头时,没

我试图从web应用程序中发现客户端是否使用透明代理。理论上应该很简单:只需检查XFF(x-forwarder-for)头是否存在。但由于一些未知的原因,这根本不起作用
我在通过公司透明代理连接到互联网的办公室工作。如果我进入任何“ip代理检查”页面,例如,它会显示来自我们代理的X-forwarded-for标头。所以,我理解,我们的公司代理正确地设置了这个标题。但是,当我连接到我们的web应用程序(在Tomcat上运行,在一些公共的外部服务器上),并且在我的webapp中列出所有HTTP头时,没有X-forwarded-for头、X-via等。
我认为这是服务器的错误,所以我在完全不同的web服务器上启动了这个webapp,由不同的提供商托管:但结果是一样的,没有与代理相关的头可用。所以我认为Tomcat可能会阻止这样的头,但是当我从某个允许我手动设置自定义头的工具连接时,我用XFF头发送请求,我的webapp会正确地看到该头。因此它不会被web服务器阻止。

那么,有人能帮我理解它是如何工作的吗?为什么当我从同一个浏览器和同一台机器导航到像my-proxy.com这样的页面时,这些页面声称有代理设置的特定于代理的http头,但当我导航到我的应用程序时,应用程序却看不到这些头?

要结束这个问题:原来我使用了非标准http端口(8080)在我的webapp服务器上进行测试-当端口不同于80时,代理不会添加其头。 另一方面,当使用https时,代理显然不会添加任何头,因为传输是经过编码的