Tomcat 9如何添加Content-Disposition:inline响应HTTP头?
在Tomcat 9中添加Content-Disposition:inline响应头的方法
针对你的jasperreports应用,有两种常见的配置方式,对应Apache的Header设置逻辑:
方法一:仅针对jasperreports应用配置(推荐)
修改该应用的WEB-INF/web.xml文件,通过过滤器设置响应头:
方式A:使用Tomcat自带的SetHeaderFilter
- 打开
[Tomcat安装目录]/webapps/jasperreports/WEB-INF/web.xml - 在
</web-app>标签前添加以下配置:
<filter> <filter-name>SetContentDisposition</filter-name> <filter-class>org.apache.catalina.filters.SetHeaderFilter</filter-class> <init-param> <param-name>Content-Disposition</param-name> <param-value>inline</param-value> </init-param> </filter> <filter-mapping> <filter-name>SetContentDisposition</filter-name> <!-- 可根据报表路径调整匹配规则,比如仅匹配报表输出URL,也可用/*匹配整个应用 --> <url-pattern>/*</url-pattern> </filter-mapping>
- 重启Tomcat后,该应用的响应会自动带上
Content-Disposition:inline头。
方式B:自定义简单过滤器(若自带过滤器不可用)
如果你的Tomcat环境没有自带SetHeaderFilter,可自行编写简单过滤器:
- 在应用的
WEB-INF/classes下创建过滤器类(示例路径:com/example/ContentDispositionFilter.java):
import javax.servlet.*; import javax.servlet.http.HttpServletResponse; import java.io.IOException; public class ContentDispositionFilter implements Filter { public void init(FilterConfig config) throws ServletException {} public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, ServletException { HttpServletResponse response = (HttpServletResponse) res; response.setHeader("Content-Disposition", "inline"); chain.doFilter(req, res); } public void destroy() {} }
- 编译该类,将生成的class文件放入
WEB-INF/classes/com/example/目录 - 在
web.xml中添加过滤器映射:
<filter> <filter-name>ContentDispositionFilter</filter-name> <filter-class>com.example.ContentDispositionFilter</filter-class> </filter> <filter-mapping> <filter-name>ContentDispositionFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>
方法二:全局配置(影响所有应用或指定应用)
若需通过Tomcat全局配置管理:
- 打开
[Tomcat安装目录]/conf/context.xml(生效于所有应用),或[Tomcat安装目录]/conf/Catalina/localhost/jasperreports.xml(仅生效于jasperreports应用) - 在
<Context>标签内添加:
<Valve className="org.apache.catalina.valves.SetHeaderValve" header="Content-Disposition" value="inline"/>
- 重启Tomcat即可生效。
注意:如果jasperreports应用代码中已设置Content-Disposition:attachment,则代码配置会覆盖过滤器/Valve的全局设置,此时需检查报表输出逻辑,调整代码中的响应头参数。
内容的提问来源于stack exchange,提问作者user2924127
相关产品推荐
相关产品推荐

