WildFly 9(JBoss)配置反向代理解决Firefox93拦截HTTPS站点HTTP下载问题
问题原因
你遇到的拦截是Firefox 93开始默认启用的混合内容下载拦截机制:HTTPS页面下发起的HTTP资源下载属于不安全混合内容,会被默认拦截。要解决这个问题必须让下载请求走HTTPS协议,你选择的反向代理思路是可行的,之前配置失效是配置错误+业务逻辑未配套修改导致的。
修复步骤
1. 调整后端业务逻辑
修改Java代码中返回报告下载地址的逻辑,不要直接返回http://report.abc.com/xxx.doc格式的报告服务器地址,统一改为返回你的HTTPS生产站点的代理路径,格式为https://[你的生产站点域名]/report-proxy/xxx.doc,让浏览器所有下载请求都走HTTPS协议的站点入口。
2. 修正Wildfly 9的Undertow反向代理配置
你之前的配置存在三个核心错误:
outbound-socket-binding的host属性不能带http:///https://协议前缀,仅需填写目标主机域名/IP- 反向代理路径和业务要使用的路径不匹配
- 代理目标指向了示例域名example.com,未指向实际的报告服务器
正确的配置片段如下:
<subsystem xmlns="urn:jboss:domain:undertow:2.0"> <buffer-cache name="default"/> <server name="default-server"> <http-listener name="default" socket-binding="http" redirect-socket="https"/> <host name="default-host" alias="localhost"> <location name="/" handler="welcome-content"/> <!-- 新增报告代理路径匹配 --> <location name="/report-proxy" handler="report-proxy-handler"/> </host> </server> <handlers> <file name="welcome-content" path="${jboss.home.dir}/welcome-content"/> <!-- 新增报告反向代理配置,指向HTTP协议的报告服务器 --> <reverse-proxy name="report-proxy-handler"> <host name="http://report.abc.com" instance-id="report-route" outbound-socket-binding="report-server"/> </reverse-proxy> </handlers> </subsystem> <!-- 新增报告服务器的出站绑定,注意host不带协议前缀,端口为报告服务器HTTP服务端口,默认80 --> <outbound-socket-binding name="report-server"> <remote-destination host="report.abc.com" port="80"/> </outbound-socket-binding>
3. 验证配置
修改配置后重启Wildfly服务,手动访问https://[你的生产站点域名]/report-proxy/mycertificate.doc,确认可以正常下载文件,且地址栏协议为HTTPS即可。
可选排查项
如果配置后依然无法正常下载,可优先排查两点:
- 确认Wildfly所在服务器的网络策略允许访问report.abc.com的80端口,无防火墙、安全组拦截
- 如果报告服务器的路径和代理路径有差异,可额外配置Undertow的重写规则调整路径
内容的提问来源于stack exchange,提问作者Nikita Salunke
相关产品推荐
相关产品推荐

