我最近从 Tomcat 8.0 升级到 8.5
自升级以来,来自其他子网的主机对请求的响应为 400,但在同一子网上,应用程序运行时没有错误 (!)
127.0.0.1 - - [06/Feb/2019:09:17:58 +0000] "GET /app/login.jsf HTTP/1.1" 200 5976
...
10.60.255.86 - - [06/Feb/2019:10:24:19 +0000] "GET /app/login.jsf HTTP/1.1" 400 –
...
fe80:0:0:0:e85f:958:813c:dee%12 - - [06/Feb/2019:10:25:53 +0000] "GET /app/login.jsf HTTP/1.1" 200 5975
...
(IPv6 地址是本地机器)
server.xml 中没有 RemoteIpValve 设置,context.xml 中没有 RemoteAddrValve。
我还应该去哪里寻找?这是默认行为吗?
发布问题几分钟后,我自己解决了问题。
子网外的主机使用不同的名称进行连接 - 特别是该 DNS 名称中包含下划线字符。DNS 名称中不允许使用下划线。Tomcat 8 不在乎。Tomcat 8.5 更明智。
如果 Tomcat 记录了它拒绝请求的原因,那就太好了。