如何获取web客户端IP地址

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何获取web客户端IP地址相关的知识,希望对你有一定的参考价值。

参考技术A 一、如果在Web Module单元中,可用如下语句实现(这其实是WebBroker技术):

Request.RemoteAddr;

二、如果是ISAPI/CGI的WebService中,*impl.pas中是无法存取Web Module单元的(uses了也不行的),如何实现?

服务器端实现的接口函数里,如何知道调用这个接口函数的客户端的IP?
在实现部分的代码里, uses WebBrokerSoap单元
然后,可以通过以下代码直接获得当前调用这个函数的客户端的IP:

GetSOAPWebModule.Request.RemoteAddr;

GetSOAPWebModule 这个函数是在 WebBrokerSoap 这个单元里的。
参考技术B public String getIpAddr(HttpServletRequest request)
if (request.getHeader("x-forwarded-for") == null)

return request.getRemoteAddr();

return request.getHeader("x-forwarded-for");
本回答被提问者采纳

如何在 Java Web 应用程序中限制客户端 IP 地址

【中文标题】如何在 Java Web 应用程序中限制客户端 IP 地址【英文标题】:How to restrict client IP address in Java Web Application 【发布时间】:2016-02-25 04:33:06 【问题描述】:

我需要根据客户端 IP 地址限制我的视图,我有静态 IP 地址列表,我只想向那些在我的 java Web 应用程序中注册 IP 地址的人显示视图

【问题讨论】:

基于 IP 地址的限制通常不是一个好主意。客户端可以轻松隐藏或更改其 IP,因此最好使用某种身份验证。 【参考方案1】:

取决于您希望如何实现过滤。

    您可以使用过滤器,该过滤器将验证并仅将请求转发到 Servlet 在 Servlet/Controller 中,您可以编写检查以控制重定向到有效 JSP 或错误 JSP 在 servlet 上下文中加载列表并使用它来检查是否在 JSP 中显示内容。

如果我是你,我会使用过滤器,这样你甚至不用接触带有该 IP 的 Servlet 层。

查看此链接以了解 Servlet 过滤器 - http://docs.oracle.com/javaee/6/tutorial/doc/bnagb.html

【讨论】:

我需要通过 javascript 获取 IP 地址,我该怎么做? @DanialSaeed 由于安全原因,无法从 JS 中获取客户端的 IP 地址。一种选择是调用将返回 IP 地址的 servlet。【参考方案2】:

这取决于你想做什么。

除其他外,您可以仅通过配置服务器来过滤(限制)您的应用程序视图到某些 IP。

如何做取决于服务器。

例如,对于 Tomcat,您需要编辑 context 中的 org.apache.catalina.valves.RemoteAddrValve(文件名:context.xml)。 也可以看看: http://tomcat.apache.org/tomcat-8.0-doc/config/valve.html#Remote_Address_Filter

这种方法的优点是可以完全隔离 从IP过滤应用程序开发。你可以申请 过滤到多个应用程序。 缺点是与基于应用程序的解决方案相比,它的灵活性和可定制性较差。

【讨论】:

以上是关于如何获取web客户端IP地址的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Java 中使用 RESTful Web 服务获取远程/客户端 IP 地址?

jquery获取客户端ip地址

C#如何在页面中获取本机的外网IP地址

Asp Net Web API 2.1 获取客户端IP地址

ASP.NET Core 3.1 - 如何获取客户端的 IP 地址?

如何让Docker容器获取外部DHCP服务器的IP地址