Web アプリケーション (web-app) とレポート Web の 2 つの Web アプリケーションがあります。の web-app にレポート web を埋め込みたいです<iframe>
。そのため、ブラウザによって次のエラーで拒否されました。
X フレーム オプション: 拒否
何か助けはありますか?
Web アプリケーション (web-app) とレポート Web の 2 つの Web アプリケーションがあります。の web-app にレポート web を埋め込みたいです<iframe>
。そのため、ブラウザによって次のエラーで拒否されました。
X フレーム オプション: 拒否
何か助けはありますか?
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()
編集 (06.2020) - X-Frame オプションは廃止されました:
「frame-ancestors ディレクティブは X-Frame-Options ヘッダーを廃止します。リソースに両方のポリシーがある場合、frame-ancestors ポリシーを適用する必要があり、X-Frame-Options ポリシーを無視する必要があります。」
https://www.w3.org/TR/CSP2/#frame-ancestors-and-frame-options
使用を検討してcontent-security-policy
ください:
<headers>
<content-security-policy policy-directives="frame-ancestors 'self'"/>
</headers>
Spring Security 4.x を使用している場合、次の構成で問題が解決します (webapp が同じサーバー アドレスで実行されていると仮定します)。
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-ヘッダー/
Spring Security 4.x では、ヘッダーはデフォルトで有効になっています (IFrame の場合: X-Frame-Options: DENY):
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 の設定内