Как отключить заголовок ответа "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()
      ...;
  }
}