如何从 ServletRequest 而不是 HTTPServletRequest 获取 IP 地址?

How can I get the IP address from a ServletRequest, not a HTTPServletRequest ?

我正在尝试寻找一个 Java 方法来获取 ServletRequest 并找到该请求的 IP 地址。我发现的类似 this 的方法,但会收到 ServletRequest 而不是 HTTPServletRequest :

ServletRequest 还提供方法 java.lang.String getRemoteAddr() 参见 https://docs.oracle.com/javaee/6/api/javax/servlet/ServletRequest.html#getRemoteAddr() 了解更多详情。

我会检查请求是否是 HTTP 请求,如果是,请使用其他问题中提出的方法。否则,我会盲目地相信方法 getRemoteAddr()

if (request instanceof HTTPServletRequest) {
    HTTPServletRequest httpRequest = (HTTPServletRequest) request;
    // read X-Forwarded-For header, etc. etc.
} else {
    ip = request.getRemoteAddr();
}