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.
私が使用している構成はからのものです(そしてそれは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();
}
}
これは私のために働いた:
@EnableWebSecurity
@Configuration
class WebSecurityConfig extends WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity http) throws Exception {
http.headers().addHeaderWriter(
new XFrameOptionsHeaderWriter(
new WhiteListedAllowFromStrategy(Arrays.asList("localhost"))));
}
}
もちろん、アプリケーションがローカルホストとは異なる場所で実行されている場合は、ホワイトリストの内容を調整する必要があります。