You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Spring Security 3 XML配置启用xframe-options时headers标签不识别如何解决

问题结论

你遇到的报错不是配置错误,是你使用的Spring Security 3版本本身不支持<headers>标签。该XML配置标签是Spring Security 3.2版本才新增的功能,3.2之前的3.x版本的schema定义中没有<headers>标签的相关声明,因此解析XML配置时会直接抛出标签不识别的异常。

解决方案

你可以根据项目实际情况选择以下两种方案解决:

  1. 升级Spring Security版本
    如果项目允许依赖升级,将Spring Security版本升级到3.2.0.RELEASE及以上版本,你现有的<headers>配置无需修改即可正常生效。
  2. 低版本手动实现响应头配置
    如果不能升级依赖,可以通过自定义Filter手动添加X-Frame-Options响应头,实现和<frame-options policy="SAMEORIGIN"/>完全相同的效果:
    首先创建Filter类:
import javax.servlet.*;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

public class XFrameOptionsFilter implements Filter {
    @Override
    public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
        HttpServletResponse resp = (HttpServletResponse) response;
        resp.addHeader("X-Frame-Options", "SAMEORIGIN");
        chain.doFilter(request, response);
    }

    @Override
    public void init(FilterConfig filterConfig) throws ServletException {}

    @Override
    public void destroy() {}
}

然后在Spring Security配置文件的<http>标签内注入自定义过滤器:

<http auto-config="true"  use-expressions="true">
    <!-- 保留你原有其他配置不变 -->
    <custom-filter ref="xFrameOptionsFilter" position="LAST"/>
</http>

<bean id="xFrameOptionsFilter" class="你自己的类全限定名.XFrameOptionsFilter"/>

也可以直接将该Filter配置到web.xml中,作用于所有请求即可。

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 17:39:03