2016-04-13 2 views
3

Я использую jquery download plugin в моем весеннем проекте, но браузер дает мне следующую ошибку:X-Frame ОТРИЦАТЬ весну безопасности

Refused to display 'http://localhost:8086/DART/fleetAndCar/download/5' in a frame because it set 'X-Frame-Options' to 'DENY'. 

Я прочитал это задача о Xframe весны безопасности, так что я добавил

http 
    .headers() 
     .addHeaderWriter(new XFrameOptionsHeaderWriter(XFrameOptionsHeaderWriter.XFrameOptionsMode.SAMEORIGIN)) 

, но это не меняет ЗАПРЕТИТЬ, но добавить еще SAMEORIGIN, так что я ему следующие ошибки:

Multiple 'X-Frame-Options' headers with conflicting values ('DENY, SAMEORIGIN') encountered when loading 'http://localhost:8086/DART/fleetAndCar/download/5'. Falling back to 'DENY'. 

и это запрос HTTP:

enter image description here

это моя конфигурация весна:

@Configuration 
    @Order(1) 
    public static class ApiWebSecurityConfig extends WebSecurityConfigurerAdapter{ 
     @Override 
     protected void configure(HttpSecurity http) throws Exception { 
      http.csrf().disable() 
      .antMatcher("/client/**") 
      .authorizeRequests() 
      //Exclude send file from authentication because it doesn't work with spring authentication 
      .antMatchers(HttpMethod.POST, "/client/file").permitAll() 
      .anyRequest().authenticated() 
      .and() 
      .httpBasic(); 
     } 
    } 

    @Configuration 
    @Order(2) 
    public static class FormWebSecurityConfig extends WebSecurityConfigurerAdapter{ 

     @Autowired 
     RoleServices roleServices; 

     @Override 
     public void configure(WebSecurity web) throws Exception { 
      web 
      //Spring Security ignores request to static resources such as CSS or JS files. 
      .ignoring() 
      .antMatchers("/static/**"); 
     } 

     @Override 
     protected void configure(HttpSecurity http) throws Exception {   
      List<Role> roles=roleServices.getRoles(); 
      //Retrieve array of roles(only string field without id) 
      String[] rolesArray = new String[roles.size()]; 
      int i=0; 
      for (Role role:roles){ 
       rolesArray[i++] = role.getRole(); 
      } 

      http 
      .headers() 
       .addHeaderWriter(new XFrameOptionsHeaderWriter(XFrameOptionsHeaderWriter.XFrameOptionsMode.SAMEORIGIN)) 
       .and() 
      .authorizeRequests() //Authorize Request Configuration 
      .anyRequest().hasAnyRole(rolesArray)//.authenticated() 
      .and() //Login Form configuration for all others 
      .formLogin() 
      .loginPage("/login") 
      .permitAll() 
      .and() 
      .exceptionHandling().accessDeniedPage("/403") 
      .and() 
      .logout() 
      .logoutSuccessUrl("/login?logout") 
      .permitAll(); 

     } 
    } 

Как я могу решить эту проблему Спасибо (загрузка работает отлично, несмотря на ошибки)

ответ

0

try

http 
     .headers() 
     .frameOptions() 
     .sameOrigin(); 
+0

Не могли бы вы предоставить нам более подробную информацию о вашем коде. ? Спасибо – Robert

+0

Это хорошая практика в переполнении стека, чтобы добавить объяснение, почему ваше решение должно работать. Для получения дополнительной информации см. [How To Answer] (// stackoverflow.com/help/how-to-answer). –