Как отключить заголовок ответа "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, и все работает как шарм. Как я могу отключить это в файле spring security xml? Что я должен написать между <http> теги
6 ответов:
по умолчанию
X-Frame-Optionsзапрещен, чтобы не допустить 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 Configs (Spring Boot) и хотел бы разрешить X-Frame-Options:SAMEORIGIN, тогда вам нужно будет использовать следующее.
для более старых версий безопасности Spring:
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.
Если вы используете конфигурацию Java Spring Security, все заголовки безопасности по умолчанию добавляются по умолчанию. Они могут быть отключены с помощью конфигурации Java ниже:
@EnableWebSecurity @Configuration public class WebSecurityConfig extends WebSecurityConfigurerAdapter { @Override protected void configure(HttpSecurity http) throws Exception { http .headers().disable() ...; } }
Comments