springboot java后台 获取访问接口的ip地址
时间: 2023-10-20 09:47:42 浏览: 148
java 获取 IP 地址
5星 · 资源好评率100%
在 Spring Boot 后台获取访问接口的 IP 地址,你可以使用 HttpServletRequest 对象来获取。以下是一个示例代码:
```java
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.servlet.http.HttpServletRequest;
@RestController
public class MyController {
@RequestMapping("/getIp")
public String getIpAddress(HttpServletRequest request) {
String ipAddress = request.getHeader("X-Forwarded-For");
if (ipAddress == null || ipAddress.length() == 0 || "unknown".equalsIgnoreCase(ipAddress)) {
ipAddress = request.getHeader("Proxy-Client-IP");
}
if (ipAddress == null || ipAddress.length() == 0 || "unknown".equalsIgnoreCase(ipAddress)) {
ipAddress = request.getHeader("WL-Proxy-Client-IP");
}
if (ipAddress == null || ipAddress.length() == 0 || "unknown".equalsIgnoreCase(ipAddress)) {
ipAddress = request.getRemoteAddr();
}
return ipAddress;
}
}
```
在上述示例中,我们在控制器类中定义了一个 `/getIp` 的请求映射方法。该方法接收一个 HttpServletRequest 对象作为参数,并通过该对象获取客户端的 IP 地址。
首先,我们尝试从请求头中获取 IP 地址。常见的请求头字段有 `X-Forwarded-For`、`Proxy-Client-IP` 和 `WL-Proxy-Client-IP`,它们可能包含客户端的真实 IP 地址。
如果无法从请求头中获取到 IP 地址,我们将使用 `request.getRemoteAddr()` 方法获取客户端的 IP 地址。
注意:由于代理等因素,通过请求头获取到的 IP 地址可能并不准确,需要根据实际情况进行适配和调整。
当请求 `/getIp` 接口时,将返回客户端的 IP 地址。你可以根据实际需求对返回值进行处理和逻辑操作。
阅读全文