如何在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.cache
, security.headers.content-type
, security.headers.hsts
和security.headers.xss
属性。 有关更多信息,请查看SecurityProperties
。