Frage So überschreiben Sie X-Frame-Optionen für einen Controller oder eine Aktion in Rails 4


Rails 4 scheint einen Standardwert von zu setzen SAMEORIGIN für die X-Frame-Options HTTP-Antwortheader Das ist groß aus Sicherheitsgründen, aber es ist nicht möglich, dass Teile Ihrer App in einem verfügbar sind iframe auf einer anderen Domain.

Sie können den Wert von überschreiben X-Frame-Options global mit dem config.action_dispatch.default_headers Rahmen:

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

Aber wie überschreiben Sie es nur für einen einzelnen Controller oder eine Aktion?


76
2017-08-26 13:50


Ursprung


Antworten:


Wenn Sie den Header vollständig entfernen möchten, können Sie einen erstellen after_action Filter:

class FilesController < ApplicationController
  after_action :allow_iframe, only: :embed

  def embed
  end

private

  def allow_iframe
    response.headers.except! 'X-Frame-Options'
  end
end

Oder, natürlich, können Sie die codieren after_action um den Wert auf etwas anderes zu setzen:

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

Beachten Sie, dass Sie Ihren Cache in bestimmten Browsern (Chrome für mich) löschen müssen, während Sie dies tun.


123
2017-08-26 13:50