如何在Spring Security中禁用“X-Frame-Options”响应头?

我有我的jsp CKeditor,每当我上传的东西,popup以下错误:

Refused to display 'http://localhost:8080/xxx/xxx/upload-image?CKEditor=text&CKEditorFuncNum=1&langCode=ru' in a frame because it set 'X-Frame-Options' to 'DENY'. 

我试过删除Spring Security,一切都像一个魅力。 我怎样才能在春季安全xml文件禁用此? 我应该在<http>标签之间写什么?

默认情况下, X-Frame-Options被设置为拒绝,以防止点击劫持攻击。 要覆盖这个,你可以在你的spring securityconfiguration文件中添加以下内容

 <http> <headers> <frame-options policy="SAMEORIGIN"/> </headers> </http> 

这里有可用的政策选项

  • DENY – 是一个默认值。 有了这个页面不能显示在一个框架,无论站点试图这样做。
  • SAMEORIGIN – 我想这就是你正在寻找的,所以页面将(和可以)显示在一个框架中与页面本身相同的起源
  • 允许 – 从 – 允许您指定一个原点,其中的页面可以显示在一个框架中。

欲了解更多信息,请看看这里 。

在这里检查如何使用XML或Javaconfiguration来configuration标头。

请注意,您可能还需要根据需要指定适当的strategy

如果您使用的是Javaconfiguration而不是XMLconfiguration,请将其放在“WebSecurityConfigurerAdapter.configure(HttpSecurity http)”方法中:

 http.headers().frameOptions().disable(); 

最有可能你不想完全停用这个Header,而是使用SAMEORIGIN 。 如果您使用的是Java Config( Spring Boot ),并希望允许X-Frame-Options: SAMEORIGIN ,那么您将需要使用以下内容。


对于较老的Spring Security版本:

 http .headers() .addHeaderWriter(new XFrameOptionsHeaderWriter(XFrameOptionsHeaderWriter.XFrameOptionsMode.SAMEORIGIN)) 

对于像Spring Security 4.0.2这样的新版本:

 http .headers() .frameOptions() .sameOrigin(); 

如果使用XMLconfiguration,您可以使用

 <beans xmlns="http://www.springframework.org/schema/beans" xmlns:security="http://www.springframework.org/schema/security"> <security:http> <security:headers> <security:frame-options disabled="true"></security:frame-options> </security:headers> </security:http> </beans> 

如果您使用的是Spring Security的Javaconfiguration,则默认添加所有默认的安全性头文件。 可以使用下面的Javaconfiguration禁用它们:

 @EnableWebSecurity @Configuration public class WebSecurityConfig extends WebSecurityConfigurerAdapter { @Override protected void configure(HttpSecurity http) throws Exception { http .headers().disable() ...; } } 

如果您使用的是Spring Boot,那么禁用Spring Security默认标头的最简单方法是使用security.headers.*属性。 特别是,如果要禁用X-Frame-Options默认标题,只需将以下内容添加到application.properties

 security.headers.frame=false 

还可以使用security.headers.cachesecurity.headers.content-typesecurity.headers.hstssecurity.headers.xss属性。 有关更多信息,请查看SecurityProperties