rails app(web) 嵌入到 iframe 中
2024-10-05
假設我的 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-Options
的 MDN 文件,其值只有 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
相關參數。