You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

Tomcat 8.5.13禁用SSL后仍有HTTP请求访问HTTPS地址,求技术建议

解决Tomcat禁用HTTPS后仍有请求访问HTTPS URL的问题

结合你提到的Tomcat 8.5.13 + Java 8 + MSSQL环境,以及已经在server.xml禁用SSL配置但仍出现HTTP请求访问HTTPS地址的情况,我整理了几个针对性的排查和解决方向:

  • 排查应用内部的硬编码URL
    最常见的原因是代码里直接写死了HTTPS地址,比如接口调用、页面跳转链接、静态资源(CSS/JS/图片)的引用路径。建议全局搜索项目代码中的https://字符串,把这些硬编码的地址改成相对路径、HTTP协议地址,或者通过配置文件统一管理URL前缀,避免硬编码。

  • 检查Tomcat的重定向/安全约束配置
    即使你禁用了SSL,之前可能配置过强制HTTPS的规则:

    • 查看web.xml里是否存在安全约束配置:
      <security-constraint>
          <web-resource-collection>
              <web-resource-name>Entire Application</web-resource-name>
              <url-pattern>/*</url-pattern>
          </web-resource-collection>
          <user-data-constraint>
              <transport-guarantee>CONFIDENTIAL</transport-guarantee>
          </user-data-constraint>
      </security-constraint>
      
      如果有,把transport-guarantee的值改成NONE,或者直接删除整个安全约束块。
    • 检查server.xml中是否配置了RewriteValve,看看规则里有没有自动跳转到HTTPS的逻辑,这类规则也需要移除或修改。
  • 验证客户端/浏览器缓存影响
    部分客户端浏览器会缓存之前的HTTPS跳转规则,导致即使服务器端禁用了HTTPS,客户端仍会自动发起HTTPS请求。可以让测试人员清除浏览器缓存,或者用隐私模式访问,确认是否还存在这个问题。

  • 排查前端代理/负载均衡配置
    如果你的Tomcat前端部署了反向代理(比如Nginx、Apache HTTP Server)或负载均衡设备,这些设备可能配置了强制HTTPS的跳转规则。比如Nginx里的return 301 https://$host$request_uri;这类配置,会直接把HTTP请求重定向到HTTPS,需要检查并修改代理服务器的规则。

  • 开启Tomcat访问日志定位请求来源
    可以在server.xml中启用访问日志,通过日志分析这些HTTPS请求的来源IP、请求路径、User-Agent等信息,帮助定位请求发起方:

    <Valve className="org.apache.catalina.valves.AccessLogValve"
           directory="logs" prefix="localhost_access_log" suffix=".txt"
           pattern="%h %l %u %t &quot;%r&quot; %s %b" />
    

    查看日志中的%r字段,确认是否真的有请求访问HTTPS URL,还是日志记录的异常情况。


内容的提问来源于stack exchange,提问作者Pradeep Pydi

火山引擎 最新活动