Java 如何添加Spring安全HTTP响应头
从Spring 3.2开始,我可以简单地将其添加到我的安全xml中:Java 如何添加Spring安全HTTP响应头,java,spring,spring-security,Java,Spring,Spring Security,从Spring 3.2开始,我可以简单地将其添加到我的安全xml中: <security:headers> <security:frame-options policy="SAMEORIGIN" /> </security:headers> 但是Spring 3.1版不支持这一点,在不升级版本的情况下有什么解决方法吗 这是3.1版的文档: 我相信xframeoptionheaderwriter实现了此配置背后的逻辑。它是
<security:headers>
<security:frame-options
policy="SAMEORIGIN" />
</security:headers>
但是Spring 3.1版不支持这一点,在不升级版本的情况下有什么解决方法吗
这是3.1版的文档:
我相信
xframeoptionheaderwriter
实现了此配置背后的逻辑。它是在Spring3.2中引入的,在该版本之前没有类似的版本
如果您想自己实现,可以使用一个简单的过滤器:
public class XFrameOptionsHeaderFilter extends OncePerRequestFilter {
@Override
protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain filterChain) throws ServletException, IOException {
response.setHeader("X-Frame-Options", "SAMEORIGIN");
filterChain.doFilter(request, response);
}
}
您需要在应用程序上下文中为此类创建bean:
<bean id="xFrameOptionsHeaderFilter" class="your.package.XFrameOptionsHeaderFilter"/>
您可以在控制器响应中设置自定义标头;tnx非常好的回答,但我似乎无法让它工作,我看到bean已加载,但在我发出请求时未调用方法。你知道可能遗漏了什么吗?也许你把豆子放错地方了?您应该将它放在应用程序上下文中,即
contextConfigLocation
中使用的上下文,而不是servlet上下文中。
<filter>
<filter-name>xFrameOptionsHeaderFilter</filter-name>
<filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
</filter>
<filter-mapping>
<filter-name>xFrameOptionsHeaderFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>