it-swarm.com.de

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

Rails 4 scheint einen Standardwert von SAMEORIGIN für den HTTP-Antwortheader X-Frame-Options Festzulegen. Dies ist aus Sicherheitsgründen großartig, erlaubt jedoch nicht, dass Teile Ihrer App in einem iframe auf einer anderen Domain verfügbar sind.

Sie können den Wert von X-Frame-Options Global überschreiben, indem Sie die Einstellung config.action_dispatch.default_headers Verwenden:

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

Aber wie kann man es für einen einzelnen Controller oder eine einzelne Aktion außer Kraft setzen?

82
Chris Peters

Wenn Sie den Header vollständig entfernen möchten, können Sie ein 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 Sie können natürlich auch das 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) leeren müssen, während Sie dies debuggen.

130
Chris Peters