rails app(web) 嵌入到 iframe 中

ruby on rails 的 web 預設是無法嵌入到 HTML iframe 中的,本篇文章將教學如何使其成功在不同網域中將 rails web 成功嵌入到 iframe 中。

MarsMars閱讀 2 分鐘
rails app(web) 嵌入到 iframe 中

假設我的 ruby on rails web 的 domain 為 example.localhost,當我想要在 foo.localhost 中嵌入 iframe 連到 example.localhost 時,會獲得以下錯誤訊息:

Refused to display 'example.localhost'; in a frame because it set 'X-Frame-Options' to 'sameorigin'.

這是因為 rails 預設 response 的 http headers 中,X-Frame-Options 的值為 sameorigin。
查詢 X-Frame-OptionsMDN 文件,其值只有 sameorigin 或 deny 兩種。
因此解決辦法為,直接在 rails 端刪掉 X-Frame-Options。 

# xxx_controller.rb
response.headers.delete 'X-Frame-Options'

另外,從 MDN 文件中可知 X-Frame-Options 在未來將會停用。
取而代之的是在 http headers 中的 Content-Security-Policy 加入 frame-ancestors 相關參數

Mars
關於作者Mars自由接案工程師 | Ruby on Rails

自由接案者、Ruby on Rails 工程師、水肺潛水員、業餘羽球、二胡、鋼琴愛好者。喜歡貓、狗。

延伸閱讀

設定電子郵件 DKIM

以 AWS SES 和 Gmail 為例,說明如何設定 DKIM,並且提供相關檢測工具。DKIM 除了需要透過 DNS TXT 設定完,需要先申請好簽署用的金鑰。

閱讀 2 分鐘