web-dev-qa-db-ja.com

WebページをHTMLフレーム内にレンダリングできるようにする

2つのWebアプリケーションがあります。Webアプリケーション(web-app)とレポートWebです。レポートアプリを<iframe>のweb-appに埋め込みたいです。そのため、ブラウザによってエラーで拒否されました:

X-Frame-Options:DENY

何か助けは?

14
haizpt

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()
17
medveshonok117

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

ソース: http://docs.spring.io/autorepo/docs/spring-security/4.0.x/reference/html/headers.html#headers-frame-options

7
flavio.donze

使用できます

<headers>
  <frame-options policy="SAMEORIGIN"/>
</headers>

<http>セキュリティアプリケーションコンテキストXMLの構成

0
Tzvika Stein