对于Tomcat 8 Java 8,HttpServletRequest.getRemoteAddr()为空
如果我使用Java 6运行Tomcat 7,则对于Tomcat 8 Java 8,HttpServletRequest.getRemoteAddr()为空,java,tomcat,servlets,websocket,atmosphere,Java,Tomcat,Servlets,Websocket,Atmosphere,如果我使用Java 6运行Tomcat 7,则HttpServletRequest.getRemoteAddr()方法会像我预期的那样返回IP地址 如果我用Java8运行Tomcat8,同样的方法会返回一个空字符串 在这两种情况下,X-Forwarded-For头也是null 这些信息通过带有Atmosphere的WebSocket发送 另外,remoteHost()和remoteUser()也都是空的。JSR-356 Websocket规范没有公开客户端IP,这就是为什么HttpServlet
HttpServletRequest.getRemoteAddr()
方法会像我预期的那样返回IP地址
如果我用Java8运行Tomcat8,同样的方法会返回一个空字符串
在这两种情况下,X-Forwarded-For
头也是null
这些信息通过带有Atmosphere的WebSocket发送
另外,
remoteHost()
和remoteUser()
也都是空的。JSR-356 Websocket规范没有公开客户端IP,这就是为什么HttpServletRequest.getRemoteAddr()
返回null
这也解释了为什么HttpServletRequest.getRemoteAddr()
返回空字符串或0.0.0.0,具体取决于您使用的大气版本,因为大气会改变HttpServletRequest
尽管WebSocket上的Tomcat 7文档声明“Tomcat实现了JSR-356定义的Java WebSocket 1.1 API”,但当我运行Tomcat 7.0.68版(即当前的Tomcat 7版本)时,HttpServletRequest.getRemoteAddr()
仍然通过WebSocket返回客户端IP地址。当我使用Java6、7或8运行Tomcat时,情况就是这样
WebSocket上的Tomcat 8文档还声明“Tomcat实现了JSR-356定义的Java WebSocket 1.1 API”,并且在Tomcat 8上运行与我在7上运行的应用程序相同的应用程序时,
HttpServletRequest.getRemoteAddr()
返回空字符串。您没有提供足够的信息。另外,如果你费心在搜索引擎中键入HttpServletRequest.getRemoteAddr返回null
,你会看到很多点击。是的,我搜索了大约一个小时,没有人回答我的问题,唯一的区别是tomcat/java版本。谢谢,你帮了我大忙。