92

SAMEORIGINRails 4では、X-Frame-OptionsHTTP 応答ヘッダーのデフォルト値が に設定されているようです。これはセキュリティ上は優れiframeていますが、アプリの一部を別のドメインで使用できるようにすることはできません。

次の設定X-Frame-Optionsを使用して、の値をグローバルにオーバーライドできます。config.action_dispatch.default_headers

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

しかし、単一のコントローラーまたはアクションだけをオーバーライドするにはどうすればよいでしょうか?

4

4 に答える 4

141

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

于 2013-08-26T13:50:49.220 に答える