HttpServletRequest.getRemoteAddr() 空 Tomcat 8 Java 8
HttpServletRequest.getRemoteAddr() empty for Tomcat 8 Java 8
如果我 运行 Tomcat 7 和 Java 6,HttpServletRequest.getRemoteAddr()
方法 returns 我期望的 IP 地址。
如果我运行Tomcat8跟Java8,方法一样returns一个空字符串。
X-Forwarded-For
header 在这两种情况下也是 null
。
消息是通过带有 Atmosphere 的 websockets 发送的。
此外,remoteHost()
和 remoteUser()
也都是空的。
JSR-356 Websocket 规范不公开客户端 IP,这就是 HttpServletRequest.getRemoteAddr()
returns null
的原因。
这也解释了为什么 HttpServletRequest.getRemoteAddr()
returns 空字符串或 0.0.0.0 取决于您使用的 Atmosphere 版本,因为 Atmosphere 改变了 HttpServletRequest
.
虽然 Tomcat7 Websockets 上的文档声明 "Tomcat implements the Java WebSocket 1.1 API defined by JSR-356",当我 运行 Tomcat 版本 7.0.68,即当前的 Tomcat 7版本,HttpServletRequest.getRemoteAddr()
仍然是 returns 通过 websocket 的客户端 IP 地址。当我 运行 Tomcat 与 Java 6、7 或 8 时,这是真的。
Websockets 上的 Tomcat 8 文档还指出 "Tomcat implements the Java WebSocket 1.1 API defined by JSR-356" 并且当 运行 在 Tomcat 8 上使用与我 运行 在 7 上相同的应用程序时, HttpServletRequest.getRemoteAddr()
returns 空字符串。
如果我 运行 Tomcat 7 和 Java 6,HttpServletRequest.getRemoteAddr()
方法 returns 我期望的 IP 地址。
如果我运行Tomcat8跟Java8,方法一样returns一个空字符串。
X-Forwarded-For
header 在这两种情况下也是 null
。
消息是通过带有 Atmosphere 的 websockets 发送的。
此外,remoteHost()
和 remoteUser()
也都是空的。
JSR-356 Websocket 规范不公开客户端 IP,这就是 HttpServletRequest.getRemoteAddr()
returns null
的原因。
这也解释了为什么 HttpServletRequest.getRemoteAddr()
returns 空字符串或 0.0.0.0 取决于您使用的 Atmosphere 版本,因为 Atmosphere 改变了 HttpServletRequest
.
虽然 Tomcat7 Websockets 上的文档声明 "Tomcat implements the Java WebSocket 1.1 API defined by JSR-356",当我 运行 Tomcat 版本 7.0.68,即当前的 Tomcat 7版本,HttpServletRequest.getRemoteAddr()
仍然是 returns 通过 websocket 的客户端 IP 地址。当我 运行 Tomcat 与 Java 6、7 或 8 时,这是真的。
Websockets 上的 Tomcat 8 文档还指出 "Tomcat implements the Java WebSocket 1.1 API defined by JSR-356" 并且当 运行 在 Tomcat 8 上使用与我 运行 在 7 上相同的应用程序时, HttpServletRequest.getRemoteAddr()
returns 空字符串。