web-dev-qa-db-ja.com

H2データベースコンソールのスプリングブートX-Frame-Optionsによってロードが拒否されました

Spring4のブートセキュリティなどを使用して開発者向けの骨格プロジェクトを構築しています。データベースコンソールにログインしてデータベースを管理しようとしているときにH2を使用すると、次のエラーが発生します。ページは空白で、firebug konsoleに4つのバグがあります:

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

へのリンク付き

/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. コンソールレベルから接続をテストできます-大丈夫です。
  2. DBは正常に動作し、import.sqlは正常に動作し、Springが起動しているときにユーザーエンティティを作成できます。

私が使用している構成はからのものです(そしてそれはxml構成でSpring3.2で動作します)

スプリングブートのデフォルトのH2 jdbc接続(およびH2コンソール)

使用:spring-boot-starter-parent 1.1.4.RELEASE

以下のコードをApplication.Javaに追加しました。今のところ、動作します。デフォルトではポート8082で、Springアプリから始まります。それはその場でヒットしませんが、開発目的ではすべて問題ありません。

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

}

これで@chrosciuからの答えを単純化することも可能です:

@Configuration
public class WebSecurityConfig extends WebSecurityConfigurerAdapter {

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

これは私のために働いた:

@EnableWebSecurity
@Configuration
class WebSecurityConfig extends WebSecurityConfigurerAdapter {

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

もちろん、アプリケーションがローカルホストとは異なる場所で実行されている場合は、ホワイトリストの内容を調整する必要があります。

3
chrosciu