使用Spring Security的過程中,需要使用iframe來引入其他域的頁面,頁面會報X-Frame-Options的錯誤,試了好幾種方法一直未能很好的解決這個問題。
這裏涉及到Spring Security的一個配置,Spring Security下,X-Frame-Options默認爲DENY,非Spring Security環境下,X-Frame-Options的默認大多也是DENY,這種情況下,瀏覽器拒絕當前頁面加載任何Frame頁面,設置含義如下:
DENY:瀏覽器拒絕當前頁面加載任何Frame頁面
SAMEORIGIN:frame頁面的地址只能爲同源域名下的頁面
ALLOW-FROM:origin爲允許frame加載的頁面地址。
<!-- 解決iframe無法引入頁面問題 。若爲ALLOW-FROM模式,必須配置strategy屬性和value屬性。否則項目啓動報錯。value屬性應該就是需要被外部iframe引用的頁面。
-->
<security:http auto-config="true" use-expressions="true">
<security:headers>
<security:frame-options policy="ALLOW-FROM" strategy="static" value="/chart.html**"/>
</security:headers>
</security:http>
同源的解決辦法:
<security:http auto-config="true" use-expressions="true">
<security:headers>
<security:frame-options policy="SAMEORIGIN"/>
</security:headers>
</security:http>
最終,使用如下方式解決了該問題:
<security:http auto-config="true" use-expressions="true">
<security:headers>
<security:frame-options disabled="true"/>
</security:headers>
</security:http>