Как отключить заголовок ответа "X-Frame-Options" в Spring Security?
у меня есть CKeditor на моем jsp, и всякий раз, когда я загружаю что-то, появляется следующая ошибка:
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-файле spring security? Что я должен написать между <http>
теги
6 ответов
по умолчанию X-Frame-Options
имеет значение denied, чтобы предотвратить на основе clickjacking атаки. Чтобы переопределить это, вы можете добавить следующее в spring security config
<http>
<headers>
<frame-options policy="SAMEORIGIN"/>
</headers>
</http>
вот доступные варианты политики
- запретить - это значение по умолчанию. При этом страница не может отображаться в рамке, независимо от того, какой сайт пытается это сделать.
- SAMEORIGIN - я предполагаю, что это то, что вы ищете для того, чтобы страница была (и может быть) отображена в рамке того же происхождения, что и сама страница
- РАЗРЕШИТЬ-ОТ - позволяет указать источник, где страница может отображаться в рамке.
для получения дополнительной информации посмотрите здесь.
и здесь чтобы проверить, как вы можете настроить заголовки с помощью XML или Java configs.
обратите внимание, что вам также может потребоваться указать соответствующий strategy
, исходя из потребностей.
Если вы используете Java configs вместо XML configs, поместите это в свой " WebSecurityConfigurerAdapter.настройка (HttpSecurity http) " метод:
http.headers().frameOptions().disable();
скорее всего вы не хотите полностью отключить этот заголовок, но использовать SAMEORIGIN
. Если вы используете конфигурации Java (Spring Boot
) и хотел бы разрешить параметры X-Frame:SAMEORIGIN
, тогда вам нужно будет использовать следующее.
для более старых версий безопасности Spring:
http
.headers()
.addHeaderWriter(new XFrameOptionsHeaderWriter(XFrameOptionsHeaderWriter.XFrameOptionsMode.SAMEORIGIN))
для более новых версий, таких как Весенняя Безопасность 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
.
Если вы используете конфигурацию Java Spring Security, все заголовки безопасности по умолчанию добавляются по умолчанию. Их можно отключить, используя конфигурацию Java ниже:
@EnableWebSecurity
@Configuration
public class WebSecurityConfig extends
WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity http) throws Exception {
http
.headers().disable()
...;
}
}