如何获取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
【讨论】:
以上是关于如何获取web客户端IP地址的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Java 中使用 RESTful Web 服务获取远程/客户端 IP 地址?