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

标签 web-applications tomcat proxy http-headers

我尝试从 Web 应用程序中发现客户端是否使用透明代理。理论上应该很简单:只需检查 XFF (x-forwarder-for) header 是否存在。但是由于某些未知原因,这根本不起作用。
我在通过公司透明代理连接到互联网的办公室工作。如果我去任何“ip-proxy-check”页面,例如http://www.my-proxy.com/show-what-ip#anonymity比它显示来 self 们代理的 X-forwarded-for header 。所以,据我所知,我们的公司代理正确设置了这个 header 。但是当我连接到我们的 Web 应用程序(在 Tomcat 上运行,在一些公共(public)的外部服务器上运行)时,在我的 Web 应用程序中我列出了所有 HTTP header ,没有 X-forwarded-for header 、x-via 等。
我以为那是服务器故障,所以我在完全不同的 Web 服务器上启动了这个 web 应用程序,由不同的提供商托管:但结果是一样的,没有与代理相关的 header 可用。所以我认为 Tomcat 可能会阻止此类 header ,但是当我从一些允许我手动设置自定义 header 的工具进行连接时,我使用 XFF header 发送请求时,我的 webapp 会正确地看到该 header 。所以它没有被网络服务器阻止。
所以 - 谁能帮助我理解它是如何工作的?为什么当我从同一个浏览器和同一台机器导航到像 my-proxy.com 这样的页面时,那些页面声称有代理设置的代理特定的 http header ,但是当我导航到我的应用程序时,应用程序却看不到这样的标题?

最佳答案

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

关于web-applications - 如何从客户端使用 http 代理的 Web 应用程序检测 - 为什么缺少 XFF header ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3832318/

相关文章:

linux - 直通代理到不同的 IP 地址

javascript - Safari 橡皮筋在 DIV 上滚动但不在页面上滚动

jquery - 使用 CSS 和 jQuery 在 Google Apps 脚本 HtmlService WebApp 中叠加图像

java - 我想了解 tomcat 服务器消息

java - Spring Boot 在部署到 Tomcat 期间无法加载外部 jar

c select() 读取直到空字符

web-applications - 如何告诉 Hunchentoot 在哪里可以找到要提供的静态网页?

python - 如何将 django 请求的值传递给 Celery 中的周期性任务?

java - 如何自定义 Spring Boot 嵌入式 Tomcat 线程池?

ruby-on-rails - 渲染图像