如何将X-Frame-Options添加到Spring Security 3.2中的某些响应中

时间:2014-11-19 15:25:20

标签: spring spring-security x-frame-options

我想在我的Spring应用程序中的所有页面中添加X-Frame-Options标题。 Spring Security 3.2提供了很好的功能,可以通过<headers> <frame-options /> </headers>配置将该标头添加到所有响应中。

但是可以从某些路径中排除此标头吗?我考虑了子类化XFrameOptionsHeaderWriter并在里面做了一些路径正则表达式匹配,但它看起来有点难看。也许有更方便的方法来实现这个目标?

1 个答案:

答案 0 :(得分:2)

我发现了如何使用XML配置:

<http>
    <headers>
        <header ref="xFrameOptionsHeaderWriter" />
    </headers>
</http>


<beans:bean id="xFrameOptionsHeaderWriter" class="org.springframework.security.web.header.writers.DelegatingRequestMatcherHeaderWriter">
    <!-- Argument 1: RequestMatcher. This matcher will match all but some paths. -->
    <beans:constructor-arg> 
        <beans:bean class="org.springframework.security.web.util.matcher.NegatedRequestMatcher">
            <beans:constructor-arg>
                <beans:bean class="org.springframework.security.web.util.matcher.OrRequestMatcher">
                    <beans:constructor-arg>
                        <beans:list>
                            <beans:bean class="org.springframework.security.web.util.matcher.AntPathRequestMatcher" c:pattern="/**/some-path/**" />
                            <beans:bean class="org.springframework.security.web.util.matcher.AntPathRequestMatcher" c:pattern="/**/another-path/**" />
                        </beans:list>
                    </beans:constructor-arg>
                </beans:bean>
            </beans:constructor-arg>
        </beans:bean>
    </beans:constructor-arg>

    <!-- Argument 2: HeaderWriter -->
    <beans:constructor-arg>
        <beans:bean  class="org.springframework.security.web.header.writers.frameoptions.XFrameOptionsHeaderWriter" c:frameOptionsMode="SAMEORIGIN" />
    </beans:constructor-arg>
</beans:bean>