如何在Tomcat 9.0.73中正确配置CSP,使其头信息在开发者工具中可见?
解决Tomcat 9.0.73中CSP头无法在开发者工具显示的问题
首先明确两个核心点:
- 你用的
<meta>标签配置的CSP,不会出现在HTTP响应头里,它属于HTML层面的配置,要验证的话得去开发者工具的「元素」面板找对应的meta标签。 - 你的meta标签本身存在语法错误,这也会导致它不生效:
imag src是拼写错误,正确写法是img-srcself需要用单引号包裹- 指令之间要用分号分隔,不是逗号
修正后的meta标签应为:
<meta http-equiv="Content-Security-Policy" content="default-src 'self'; img-src 'self'">
如果你的需求是让CSP出现在HTTP响应头中(即开发者工具「网络」面板的响应头里能看到),请使用以下两种Tomcat配置方式:
方法一:通过Tomcat自带过滤器配置(全局生效)
在项目的web.xml中添加如下过滤器配置:
<filter> <filter-name>CspFilter</filter-name> <filter-class>org.apache.catalina.filters.HttpHeaderSecurityFilter</filter-class> <init-param> <param-name>contentSecurityPolicy</param-name> <param-value>default-src 'self'; img-src 'self'</param-value> </init-param> </filter> <filter-mapping> <filter-name>CspFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>
配置完成后重启Tomcat,访问项目时就能在网络面板的响应头中看到Content-Security-Policy字段。
方法二:在代码中设置响应头(局部生效)
如果只想给特定页面配置CSP,可以在JSP或Servlet中直接设置响应头:
- JSP页面中添加:
<% response.setHeader("Content-Security-Policy", "default-src 'self'; img-src 'self'"); %> - Servlet中添加:
response.setHeader("Content-Security-Policy", "default-src 'self'; img-src 'self'");
内容的提问来源于stack exchange,提问作者May Yeung
相关产品推荐
相关产品推荐

