SpringBoot获取IP
时间: 2024-09-11 07:12:38 浏览: 79
Spring Boot获取客户端的IP地址通常通过`HttpServletRequest`对象来完成,因为这个对象包含了请求的相关信息。以下是一个简单的示例:
```java
import javax.servlet.http.HttpServletRequest;
import java.net.InetAddress;
public class IpUtils {
public static String getRemoteIp(HttpServletRequest request) {
String ip = request.getHeader("X-Forwarded-For");
if (ip == null || ip.trim().length() == 0) {
ip = request.getRemoteAddr();
}
// 处理可能出现的非标准格式如"::1", "localhost"
return InetAddress.getByName(ip).getHostAddress();
}
}
```
在这个例子中,首先尝试从HTTP头`X-Forwarded-For`获取代理服务器的IP,这是因为有些代理服务会将原始IP隐藏在这个头里。如果这个头不存在或者为空,则直接使用`request.getRemoteAddr()`获取客户端的原始IP。最后,需要确保返回的是IPv4或IPv6格式的字符串。
要在Spring Boot控制器或其他地方使用这个方法,你可以注入`HttpServletRequest`并调用它:
```java
@Autowired
private HttpServletRequest request;
public String getClientIpAddress() {
return IpUtils.getRemoteIp(request);
}
阅读全文