SpringBoot项目中获取IP地址
在Spring Boot项目中获取客户端IP地址,可以通过HttpServletRequest
对象来实现。以下是一个简单的示例代码,展示了如何在Controller中获取IP地址:
import javax.servlet.http.HttpServletRequest;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class IPController {
@GetMapping("/get-ip")
public String getIP(HttpServletRequest request) {
String remoteAddr = "";
if (request != null) {
remoteAddr = request.getHeader("X-FORWARDED-FOR");
if (remoteAddr == null || "".equals(remoteAddr)) {
remoteAddr = request.getRemoteAddr();
}
}
return remoteAddr;
}
}
在这个例子中,我们首先尝试从X-FORWARDED-FOR
头部获取IP地址,这是因为客户端通过HTTP代理或负载均衡器访问你的应用时,原始的IP地址可能被代理服务器或负载均衡器存储在这个头部中。如果X-FORWARDED-FOR
头部不存在,我们就直接从HttpServletRequest
的getRemoteAddr()
方法获取IP地址。
请注意,获取到的IP地址可能是代理服务器的地址,而不是最终用户的直接地址,这取决于你的部署环境和客户端配置。
评论已关闭