Rails 4は、X-Frame-Options
HTTP応答ヘッダーにSAMEORIGIN
のデフォルト値を設定しているようです。これはセキュリティのためにgreatですが、アプリの一部を別のドメインのiframe
で使用することはできません。
X-Frame-Options
設定を使用して、config.action_dispatch.default_headers
の値をグローバルにオーバーライドできます。
config.action_dispatch.default_headers['X-Frame-Options'] = "ALLOW-FROM https://apps.facebook.com"
しかし、単一のコントローラーまたはアクションだけでそれをどのようにオーバーライドしますか?
ヘッダーを完全に削除する場合は、after_action
フィルター:
class FilesController < ApplicationController
after_action :allow_iframe, only: :embed
def embed
end
private
def allow_iframe
response.headers.except! 'X-Frame-Options'
end
end
または、もちろん、after_action
値を別の値に設定するには:
class FacebookController < ApplicationController
after_action :allow_facebook_iframe
private
def allow_facebook_iframe
response.headers['X-Frame-Options'] = 'ALLOW-FROM https://apps.facebook.com'
end
end
これをデバッグしている間、特定のブラウザ(Chromeの場合)でキャッシュをクリアする必要があることに注意してください。