45 votes

Pourquoi la console H2 de Spring Boot affiche-t-elle un écran vide après la connexion ?

J'utilise Spring Boot 1.4.1 avec la base de données H2. J'ai activé la console H2 comme décrit dans le manuel de l'utilisateur. guide de référence en ajoutant les lignes suivantes à mon fichier application.properties :

spring.h2.console.enabled=true
spring.h2.console.path=/h2

Lorsque j'accède à la console H2 dans Chrome 53 pour Windows, je peux voir la page de connexion et en cliquant sur le bouton "Tester la connexion", le résultat est "Test réussi" :

enter image description here

Mais lorsque je clique sur le bouton "Connecter", l'écran devient complètement vide. Lorsque je visualise la source, je vois "Sorry, Lynx not supported yet" (voir la page source complète ). La même chose se produit dans Firefox.

Pourquoi cela se produit-il ? Je pense que j'utilise l'URL JDBC correcte, comme l'ont indiqué quatre personnes différentes sur le site Web de l'entreprise. cette question que vous devez utiliser jdbc:h2:mem:testdb .

91voto

pacoverflow Points 295

Selon un article de blog il faut ajouter une ligne à le site configure de la méthode SecurityConfig si vous avez la classe spring-boot-starter-security dans votre projet, sinon vous verrez une page vide après vous être connecté à la console H2 :

http.headers().frameOptions().disable();

J'ai ajouté cette ligne et cela a résolu le problème.

Alternativement, la ligne suivante peut être utilisée (comme mentionné ci-dessus) aquí ) :

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

0 votes

Cela ressemble à un bogue dans Spring Boot. J'ai ouvert github.com/spring-projects/spring-boot/issues/7198 pour que nous puissions enquêter.

0 votes

J'appuie la suggestion de sashok_bg.

7voto

Tincho Points 37

Je peux résoudre le même problème en utilisant le code suivant dans ma classe SecurityConfig

@Override
protected void configure(HttpSecurity http) throws Exception {
    bla();
    bla();   
    http.headers().frameOptions().sameOrigin();
}

Je ne sais pas ce que fait cette ligne, peut-être que quelqu'un avec plus d'expérience pourra l'expliquer.

2 votes

Toutes les informations présentes dans XFrameOptionsHeaderWriter : il ajoute l'en-tête "X-Frame-Options : SAMEORIGIN". Cela fonctionne pour moi aussi (bien que j'utilise l'extension ModHeader pour Chrome au lieu de modifier le code).

0voto

Antariksh Points 273

Ajoutez ceci à votre application.properties

 security.headers.frame=false

2 votes

J'ai essayé, mais le message suivant s'affiche : "La propriété 'security.headers.frame' est obsolète : L'auto-configuration de la sécurité n'est plus personnalisable. Fournissez votre propre bean WebSecurityConfigurer à la place." Et cela ne semble pas résoudre le problème. Merci quand même.

0voto

Deb Points 64

Avec la réponse de @pacoverflow, notez ce qui suit :

A partir de Spring Boot 2.3.4. Le nom de la base de données est imprimé dans la console : enter image description here Connectez-vous en utilisant ce nom de base de données : enter image description here

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X