2014-10-06 4 views
7

Sto creando un progetto scheletrico per dev con la sicurezza di avvio di spring 4 e altri. Utilizzando H2 durante il tentativo di accedere alla console db e gestire il mio db ho il seguente errore. La pagina è vuota, con 4 bug in Firebug Konsole:Boot boot della console del database H2 Caricamento negato da X-Frame-Options

Load denied by X-Frame-Options: http://localhost:8080/console 

con collegamenti alle

/header.jsp?jsessionid=f71207a702c9177e57208414721bbe93 does not permit framing. 
/query.jsp?jsessionid=f71207a702c9177e57208414721bbe93 does not permit framing. 
/help.jsp?jsessionid=f71207a702c9177e57208414721bbe93 does not permit framing. 
/tables.do?jsessionid=f71207a702c9177e57208414721bbe93 does not permit framing. 
  1. posso verificare la connessione dal livello di console - il suo ok.
  2. DB funziona correttamente, import.sql funziona correttamente, è possibile creare entità utente con avvio della molla.

La configurazione che sto usando è da (e funziona su primavera 3.2 con configurazione XML)

spring boot default H2 jdbc connection (and H2 console)

Usando: primavera-boot-starter-genitore 1.1.4.RELEASE

+0

Aggiunto .e() header() .addHeaderWriter (nuova XFrameOptionsHeaderWriter ( \t \t nuovo WhiteListedAllowFromStrategy (Arrays.asList ("http: // localhost: 8080", "http: // localhost")))) Pagina bianca e informazioni da aggiornare alla pagina per ottenere il codice sorgente. –

risposta

4

Aggiunto il codice qui sotto a Application.java e per ora funziona, di default sulla porta 8082, inizia con l'app di primavera. Non ha colpito il punto, ma per scopi di sviluppo è tutto ok.

@Bean 
org.h2.tools.Server h2Server() { 
    Server server = new Server(); 
    try { 
     server.runTool("-tcp"); 
     server.runTool("-tcpAllowOthers"); 
    } catch (Exception e) { 
     e.printStackTrace(); 
    } 
    return server; 

} 
2

questo ha funzionato per me:

@EnableWebSecurity 
@Configuration 
class WebSecurityConfig extends WebSecurityConfigurerAdapter { 

    @Override 
    protected void configure(HttpSecurity http) throws Exception { 
     http.headers().addHeaderWriter(
      new XFrameOptionsHeaderWriter(
       new WhiteListedAllowFromStrategy(Arrays.asList("localhost")))); 
    } 
} 

Naturalmente contenuto della lista bianca devono essere regolati nel caso in cui l'applicazione è in esecuzione su qualcosa di diverso da localhost.

+1

Soluzione ancora migliore: 'http.headers(). AddHeaderWriter (nuovo XFrameOptionsHeaderWriter (XFrameOptionsMode.SAMEORIGIN));' Questo non richiede l'esplicitazione del nome host di stato nella configurazione di sicurezza – chrosciu

+6

Ancora meglio: '.headers(). FrameOptions(). sameOrigin() ' –

10

E 'anche possibile semplificare la risposta da @chrosciu con questo:.

@Configuration 
public class WebSecurityConfig extends WebSecurityConfigurerAdapter { 

    @Override 
    protected void configure(HttpSecurity http) throws Exception { 
    http.headers().frameOptions().disable(); 
    } 
} 
+0

Oppure, più sicuro,' headers(). frameOptions(). sameOrigin() '. – djxak