文章分类:Java编程
像移动网关一样,iisforward这个ISAPI过滤器也会对request对象进行再包装,附加一些WLS要用的头信息。这种情况下,直接用request.getRemoteAddr()是无法取到真正的客户IP的。
实际的iisforward附加头如下:
-
WL-Proxy-Client-IP=
211.161
.
1.239
-
Proxy-Client-IP=
211.161
.
1.239
-
X-Forwarded-For=
211.161
.
1.239
-
WL-Proxy-Client-Keysize=
-
WL-Proxy-Client-Secretkeysize=
-
X-WebLogic-Request-ClusterInfo=
true
-
X-WebLogic-KeepAliveSecs=
30
-
X-WebLogic-Force-JVMID=-
327089098
-
WL-Proxy-SSL=
false
综上,正确作法如下:
-
private
String getIpAddr() {
-
String ipAddress =
null
;
-
-
ipAddress =
this
.getRequest().getHeader(
"x-forwarded-for"
);
-
if
(ipAddress ==
null
|| ipAddress.length() ==
0
||
"unknown"
.equalsIgnoreCase(ipAddress)) {
-
ipAddress =
this
.getRequest().getHeader(
"Proxy-Client-IP"
);
-
}
-
if
(ipAddress ==
null
|| ipAddress.length() ==
0
||
"unknown"
.equalsIgnoreCase(ipAddress)) {
-
ipAddress =
this
.getRequest().getHeader(
"WL-Proxy-Client-IP"
);
-
}
-
if
(ipAddress ==
null
|| ipAddress.length() ==
0
||
"unknown"
.equalsIgnoreCase(ipAddress)) {
-
ipAddress =
this
.getRequest().getRemoteAddr();
-
if
(ipAddress.equals(
"127.0.0.1"
)){
-
-
InetAddress inet=
null
;
-
try
{
-
inet = InetAddress.getLocalHost();
-
}
catch
(UnknownHostException e) {
-
e.printStackTrace();
-
}
-
ipAddress= inet.getHostAddress();
-
}
-
-
}
-
-
-
if
(ipAddress!=
null
&& ipAddress.length()>
15
){
-
if
(ipAddress.indexOf(
","
)>
0
){
-
ipAddress = ipAddress.substring(
0
,ipAddress.indexOf(
","
));
-
}
-
}
-
return
ipAddress;
-
}
分享到:
相关推荐
2. **获取客户端IP地址**:在Web应用中,服务器需要区分每个客户端,`IpUtils`可能会有方法处理`HttpServletRequest`对象,从HTTP请求头(如`X-Forwarded-For`或`RemoteAddr`)中解析出真实客户端的IP地址。...
System.out.println("客户端IP地址为:" + ipAddress); } } ``` 在上述代码中,`HttpServletRequest`的`getRemoteAddr()`方法用于获取客户端的IP地址。然而,如果应用部署在反向代理服务器(如Nginx)后,这个方法...
下面将详细介绍如何使用Java获取计算机名和IP地址。 首先,我们来看如何获取计算机名。计算机名通常指的是主机在网络中的标识符,可以通过`java.lang`包中的`InetAddress`类来获取。以下是一个简单的示例: ```...
在Java编程中,获取服务器的IP地址和MAC地址是常见的需求,特别是在网络通信和系统管理中。本篇文章将详细介绍如何使用Java实现这一功能,包括针对单网卡和多网卡环境的情况。 首先,获取服务器的IP地址通常涉及到`...
`host`是服务器的IP地址或域名,`port`是服务器上监听的端口号。 3. **获取输入/输出流**:一旦连接建立,可以使用`Socket`对象的`getInputStream()`和`getOutputStream()`方法获取输入流和输出流,分别用于从...
对于使用Java Server Pages (JSP) 的开发者来说,了解如何高效地获取客户端IP地址至关重要。本文将详细介绍几种在JSP环境中获取客户端IP地址的有效方法,并提供实际的代码示例。 #### 二、获取客户端IP地址的重要性...
3. **处理 `REMOTE_ADDR`**:如果以上两种方式都无法获取到有效的IP地址,则直接使用`request.getRemoteAddr()`方法获取客户端IP地址。需要注意的是,这种方式获取的可能是代理服务器的IP地址而非客户端的真实IP地址...
### Java获取IP地址知识点解析 在本篇文章中,我们将深入探讨如何使用Java语言来获取IP地址。这是一项在网络编程中非常基础且重要的技能,能够帮助开发者了解客户端或服务器的网络位置信息。以下是对给定文件中的...
本篇文章将详细介绍如何在不同情况下获取用户的真实IP地址,并探讨可能遇到的问题。 首先,最常见的方法是在HTTP请求头中查找“X-Real-IP”或“X-Forwarded-For”字段。这些字段通常由代理服务器设置,用于传递原始...
此外,在获取客户端请求地址时,我们可以使用HttpServletRequest对象的getHeader()方法获取客户端的IP地址。我们可以使用"x-forwarded-for"、"Proxy-Client-IP"、"WL-Proxy-Client-IP"等header来获取客户端的IP地址...
本文将深入探讨如何在不同的操作系统上获取本机的IP和MAC地址,以及如何判断一个IP地址是否为内网IP,并将字符串形式的IP地址转换为数值表示。我们将主要关注以下几个知识点: 1. **跨平台获取本机IP地址**: 跨...
1. **获取客户端IP地址**: - 在传统的JSP页面中,可以通过`HttpServletRequest`的`getRemoteAddr()`方法直接获取客户端的IP地址。这适用于服务器直接与浏览器交互的情况。 - 对于JSF(JavaServer Faces)应用,...
对于应用程序开发者而言,获取IP地址主要通过编程接口,例如Android中的`java.net.InetAddress`类。 在Android应用中,获取手机IP地址可以通过以下步骤实现: 1. **权限请求**: 在AndroidManifest.xml中添加`...
在Java编程中,获取本机和服务器的IP地址是一项常见的任务,这有助于建立网络连接、进行定位服务或者进行网络通信。下面将详细解释如何通过Java实现这个功能。 首先,我们需要了解IP地址的基本概念。IP地址...
如果找不到,它会检查其他可能的代理服务器头,最后如果所有尝试都失败,就返回`request.getRemoteAddr()`,这是最直接获取客户端IP的方式,但可能在有代理的情况下返回代理服务器的IP。 获取到IP地址后,我们可以...
1. 创建`Socket`对象,指定服务器的IP地址和端口号,建立到服务器的连接。 2. 获取`Socket`的输入流和输出流。 3. 客户端向服务器发送请求,例如发送一段文本。 4. 通过输出流`write()`方法将数据写入网络,发送到...
2. **HTTP请求头**:在Web应用中,服务器可以通过处理HTTP请求头来获取客户端的IP地址。通常,`X-Forwarded-For`头字段包含了经过代理服务器转发的原始IP,而`Remote-Addr`头则直接表示客户端的IP。在工具类中,可能...
在Java编程语言中,处理和分析IP地址是一项常见的任务,特别是在网络编程和数据分析领域。IP地址(Internet Protocol address)是互联网上设备的唯一标识符,通常以点分十进制的形式表示,例如“192.168.1.1”。在...
3. **创建DatagramPacket**:将字节数组和服务器的IP地址及端口号封装到`DatagramPacket`中,准备发送。 4. **发送数据**:调用`DatagramSocket.send(DatagramPacket packet)`将数据报发送给服务器。 5. **接收响应*...
1. **Socket编程**:Java的`java.net.Socket`类是进行TCP通信的基础,它提供了创建连接到特定IP地址和端口的能力。在Telnet客户端中,我们需要创建一个Socket对象,指定服务器的IP地址(如`127.0.0.1`或公网IP)和...