2つのWebアプリケーションがあります。Webアプリケーション(web-app)とレポートWebです。レポートアプリを<iframe>
のweb-appに埋め込みたいです。そのため、ブラウザによってエラーで拒否されました:
X-Frame-Options:DENY
何か助けは?
X-Frame-optionsの値は、DENY(デフォルト)、SAMEORIGIN、およびALLOW-FROM uriです。 Spring Securityのドキュメントによると、カスタムヘッダーを追加してデフォルトの動作を上書きするようにSpringに指示できます。
@Override
protected void configure(HttpSecurity http) throws Exception {
http
.headers()
.addHeaderWriter(new XFrameOptionsHeaderWriter(new WhiteListedAllowFromStrategy(Arrays.asList("www.yourhostname.com"))))
...
}
そしてSpringはX-Frame-Options:ALLOW-FROM ...を追加します
.addHeaderWriter(new XFrameOptionsHeaderWriter(XFrameOptionsHeaderWriter.XFrameOptionsMode.SAMEORIGIN))
x-Frame-Optionsの場合:SAMEORIGINまたは完全に無効にする
http.headers().frameOptions().disable()
Spring Security 4.xを使用している場合は、次の構成で問題が解決します(Webアプリケーションが同じサーバーアドレスで実行されている場合)。
XML設定:
_<http>
<!-- ... -->
<headers>
<frame-options policy="SAMEORIGIN" />
</headers>
</http>
_
Java設定:
_@EnableWebSecurity
public class WebSecurityConfig extends
WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity http) throws Exception {
http
// ...
.headers().frameOptions().sameOrigin();
}
}
_
設定を無効にする
セキュリティリスクに注意して、無効にすることもできます。
http.headers().frameOptions().disable();
背景情報
Spring Security 3.2.0では、セキュリティヘッダーが導入されましたが、デフォルトでは無効になっています。
http://spring.io/blog/2013/08/23/spring-security-3-2-0-rc1-highlights-security-headers/
Spring Security 4.xでは、ヘッダーはデフォルトで有効になっています(IFrameの場合:X-Frame-Options:DENY): "Spring Security 4.xは、Java構成とXML構成の両方をデフォルトを明示的に無効にする必要があります。」
http://docs.spring.io/spring-security/site/migrate/current/3-to-4/html5/migrate-3-to-4-jc.html#m3to4 -header
使用できます
<headers>
<frame-options policy="SAMEORIGIN"/>
</headers>
<http>
セキュリティアプリケーションコンテキストXMLの構成