如何在Spring Security for x frame选项中提供请求匹配器?

时间:2017-02-08 11:02:59

标签: spring-security

我启用了Spring Security标头。

我的代码是这样的:

<security:headers disabled="false">
       <security:content-security-policy policy-directives="script-src  'self' 'unsafe-inline' 'unsafe-eval'" />
       <security:cache-control disabled="true"/>
</security:headers>

默认情况下,X-FRAME-OPTIONSDENY。 但有些请求我应该X-FRAME-OPTIONS启用SAMEORIGIN。怎么办?

1 个答案:

答案 0 :(得分:0)

您可以使用DelegatingRequestMatcherHeaderWriter,请参阅Spring Security Reference

  

20.2.3 DelegatingRequestMatcherHeaderWriter

     

有时您可能只想为某些请求编写标头。例如,您可能只希望保护您的登录页面不受框架限制。您可以使用DelegatingRequestMatcherHeaderWriter来执行此操作。使用XML命名空间配置时,可以使用以下命令完成此操作:

     
<http>
  <!-- ... -->

  <headers>
      <frame-options disabled="true"/>
      <header ref="headerWriter"/>
  </headers>
</http>

<beans:bean id="headerWriter"
class="org.springframework.security.web.header.writers.DelegatingRequestMatcherHeaderWriter">
  <beans:constructor-arg>
      <bean class="org.springframework.security.web.util.matcher.AntPathRequestMatcher"
        c:pattern="/login"/>
  </beans:constructor-arg>
  <beans:constructor-arg>
      <beans:bean
        class="org.springframework.security.web.header.writers.frameoptions.XFrameOptionsHeaderWriter"/>
  </beans:constructor-arg>
</beans:bean>

要对不同的网址使用DENYSAMEORIGIN,您必须添加两个header元素和两个不同的DelegatingRequestMatcherHeaderWriter