【发布时间】:2018-11-15 02:30:30
【问题描述】:
我正在尝试寻找一种能够获取 ServletRequest 并找到该请求的 IP 地址的 Java 方法。我找到了类似 this 的方法,但会收到 ServletRequest 而不是 HTTPServletRequest :
【问题讨论】:
标签: java servlets ip-address clientip
我正在尝试寻找一种能够获取 ServletRequest 并找到该请求的 IP 地址的 Java 方法。我找到了类似 this 的方法,但会收到 ServletRequest 而不是 HTTPServletRequest :
【问题讨论】:
标签: java servlets ip-address clientip
我会检查请求是否是 HTTP 请求,如果是,请使用另一个问题中提出的方法。否则,我会盲目相信getRemoteAddr()这个方法。
if (request instanceof HTTPServletRequest) {
HTTPServletRequest httpRequest = (HTTPServletRequest) request;
// read X-Forwarded-For header, etc. etc.
} else {
ip = request.getRemoteAddr();
}
【讨论】:
ServletRequest 还提供了java.lang.String getRemoteAddr() 方法,请参阅https://docs.oracle.com/javaee/6/api/javax/servlet/ServletRequest.html#getRemoteAddr() 了解更多详情。
【讨论】: