75

X-Frame-Options HTTP応答ヘッダーのデフォルト値はSAMEORIGINです。これはセキュリティのためにgreatですが、アプリの一部が別のドメインのiframeで利用できるようにすることはできません。Rails 4のコントローラーまたはアクションのX-Frame-Optionsをオーバーライドする方法

config.action_dispatch.default_headers['X-Frame-Options'] = "ALLOW-FROM https://apps.facebook.com" 

をしかし、どのように1つだけのコントローラやアクションのためにそれを上書きします:

あなたはグローバルconfig.action_dispatch.default_headers設定を使用してX-Frame-Optionsの値を上書きすることができますか?

答えて

122

あなたは完全に、ヘッダを削除したい場合は、あなたが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 for me)でキャッシュをクリアする必要があることに注意してください。

+0

これはどのようにredirect_toで動作するのですか? (私のAngularアプリケーションで今試していますが、動作していません) – kittyminky

+0

'redirect_to'を含むアクションとリダイレクトするアクションの両方がこれを適用する必要があると思います。特定のエラーが発生していますか? Stack Overflowに関する良い質問です。 –

+0

前回の 'after_action' *の前に、' Angular'ルートにリダイレクトする最後のコントローラアクションにリダイレクトされたことがわかりました。ありがとうございました! – kittyminky

関連する問題