如何在servlet java中获取客户端公共IP地址[重复]

Posted

技术标签:

【中文标题】如何在servlet java中获取客户端公共IP地址[重复]【英文标题】:How to get client public ip address in servlet java [duplicate] 【发布时间】:2014-08-16 19:56:09 【问题描述】:

我正在使用带有 Java Web 应用程序的 Tomcat 服务器。 我需要来自请求的客户端公共 IP 地址。但我无法理解,我使用了 request.getHeader("x-forwarded-for") request.getRemoteAddr() 方法,但我得到客户端机器本地 IP 地址。

【问题讨论】:

***.com/questions/16163874/… 【参考方案1】:

您正在本地网络中运行您的服务器。如果它在野外request.getRemoteAddr()应该做它的工作。

如果您甚至在本地网络中确实需要您的公共 IP,因为它位于路由器后面或使用 NAT 的东西之后,您的本地网络中的公共 IP 可能都相同,这在我看来没有多大意义。即使您想获得公共 IP,也可以使用 ipecho 之类的服务:http://ipecho.net/plain

【讨论】:

如果在本地网络中就无法获取公网IP? 感谢查拉图斯特拉。我需要它,所以我会尝试这项服务。再次感谢。【参考方案2】:

如果您在 JSP 中构建 Web 应用程序并希望将客户端的公共 IP 地址发送到服务器,您可以使用带有 JSP 的 javascript 来实现。

//JavaScript dynamically created to obtain CLIENT MACHINE'S IP ADDRESS
        var script = document.createElement("script");
        script.type = "text/javascript";
        script.src = "http://www.telize.com/jsonip?callback=DisplayIP";
        document.getElementsByTagName("head")[0].appendChild(script);

        //below given function returns CLIENT MACHINE'S IP ADDRESS to the text box
        function DisplayIP(response)
        
            document.getElementById("clientip").value = response.ip;
        

IP 地址将存储在 clientip 中并将其传递给您发布表单的服务器列表并将其传递给 servlet。

【讨论】:

感谢小丑的关注。谢谢。

以上是关于如何在servlet java中获取客户端公共IP地址[重复]的主要内容,如果未能解决你的问题,请参考以下文章

如何在 servlet 中获取客户端的远程地址?

如何在C#中获取用户的公共IP地址

在java web中怎么用java代码获取访问者的IP,同时根据访问者的IP判断他是属于那个城市

获取客户端公共 IP [重复]

如何通过 Amazon API Gateway (JAVA) 检索用户的公共 IP 地址

java filter 如何中获取请求地址?