我在我的jsp上有CKeditor,每当我上传一些东西时,会弹出以下错误:
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,一切都像魅力一样。如何在spring security xml文件中禁用它?我应该在<http>
标签之间写些什么
默认情况下,X-Frame-Options
被设置为拒绝,以防止clickjacking攻击。要覆盖它,可以将以下内容添加到spring security配置中
<http>
<headers>
<frame-options policy="SAMEORIGIN"/>
</headers>
</http>
以下是可用的政策选项
有关更多信息,请查看here。
和here一起检查如何使用XML或Java配置来配置头文件。
请注意,您可能还需要根据需要指定适当的strategy
。
如果您使用Java配置而不是XML配置,请将其放在WebSecurityConfigurerAdapter.configure(HttpSecurity http)
方法中:
http.headers().frameOptions().disable();
您很可能不想完全停用此标头,但请使用SAMEORIGIN
。如果您正在使用Java Configs(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();
如果使用XML配置,您可以使用
<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 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
。
如果您使用的是Spring Security的Java配置,则默认情况下会添加所有默认安全标头。可以使用以下Java配置禁用它们:
@EnableWebSecurity
@Configuration
public class WebSecurityConfig extends
WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity http) throws Exception {
http
.headers().disable()
...;
}
}