我使用 Ruby on Rails 作为服务器端框架,但我确信该解决方案是跨平台的。
我想向用户显示他的真实 IP 地址。该应用程序部署在公司网络中。大多数用户以直接的方式连接到应用程序,无需代理、NAT 等。但其中一些用户使用代理。
现在他们看到代理服务器的 IP 地址。
向他们显示真实 IP 地址的最佳方式是什么?
如我所见,仅使用服务端技术是不可能的。所以解决方案应该是使用 JS(几乎所有用户都启用 JS)、Flash(大约 80% 的用户使用它)或 JAVA(大约 50%)。如果解决方案是 rails 插件就好了,但这不是那么重要。
更新。不幸的是,X-Forwarded-For header 没有有趣的信息。
UPD2. 我想显示本地网络 ip(例如 192.168..)。
UPD3.几乎所有的客户端浏览器都是Internet Explorer(7、8、6版本)
最佳答案
这是一个利益问题,但我要告诉坏消息的传递者。无论您使用何种平台或代码,您都无法获得 100% 有效的解决方案。
让我解释一下, 一些代理在 header 中转发发起者 ip(通常是 x-forwarded-for)。这不是 100%。
客户端的 Javascript 可以(未决的安全限制)为您提供客户端 ip,但是,这可以是本地网络 ip(例如 192.168.。)
UPD:请参阅我下面的评论,了解适用于所有用户都在公司网络上的 javascript 解决方案说明。
关于javascript - 如何向用户显示他的真实 IP 地址(在代理之后),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8204281/