H2-控制台未在浏览器中显示

时间:2018-11-20 14:28:40

标签: spring-boot h2

我正在使用SpringBoot api并使用具有以下属性设置的H2数据库。

spring.h2.console.enabled=true
spring.datasource.name=test
spring.datasource.username=sa
spring.datasource.password=
spring.datasource.driver-class-name=org.h2.Driver
spring.jpa.database-platform=org.hibernate.dialect.H2Dialect
spring.datasource.initialization-mode = embedded
spring.datasource.url=jdbc:h2:mem:test
spring.jpa.hibernate.ddl-auto = update

当我想使用浏览器通过“ http://localhost:8082/h2-console”查看H2数据库控制台时,在浏览器中打开一个带有“连接并测试连接”按钮的屏幕。当我单击“测试连接”时,它返回成功,但是当单击“连接”按钮时,出现了本地主机拒绝连接的错误。

Here is the screen of that error

6 个答案:

答案 0 :(得分:15)

根据this blog post,需要向其中添加一行 如果项目中具有configure依赖项,则使用SecurityConfig类的spring-boot-starter-security方法,否则登录H2控制台后将看到一个空白页面:

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

我添加了这一行,它解决了问题。

或者,可以使用以下行(如here所述):

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

答案 1 :(得分:2)

除了@Alien的回复,我还必须添加http.csrf().disable();

答案 2 :(得分:1)

将这两行添加到您的spring安全文件中,一切顺利。

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

答案 3 :(得分:0)

在第一行application.properties中添加了

spring.datasource.url=jdbc:h2:mem:testdb
spring.datasource.driverClassName=org.h2.Driver
spring.datasource.username=sa
spring.datasource.password=
spring.jpa.database-platform=org.hibernate.dialect.H2Dialect

spring.h2.console.enabled=true

并且还在pom.xml上添加了以下内容

<build>
  <plugins>
    <plugin>
      <configuration>
        <jdbc>
          <driver>org.h2.Driver</driver>
          <url>jdbc:h2:~/test</url>
        </jdbc>
      </configuration>
    </plugin>
  </plugins>
<build>

答案 4 :(得分:0)

默认情况下,Spring Security禁用iframe中的呈现,因为允许将网页添加到框架可能是一个安全问题,例如Clickjacking。由于H2控制台在框架中运行,因此在启用Spring安全性后,必须显式禁用框架选项,以使H2控制台正常工作。

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

通常X-Frame-Options有两个可能的指令,它们是DENY或SAMEORIGIN,因此以下配置也可以用于受限制但安全的访问。

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

这允许页面以与页面本身相同的原点显示在框架中

答案 5 :(得分:-1)

H2控制台显示从VPN断开连接后