Rails 4 semble définir une valeur par défaut de SAMEORIGIN
pour le X-Frame-Options
En-tête de réponse HTTP. Ceci est génial pour la sécurité, mais cela ne permet pas à certaines parties de votre application d'être disponibles dans un iframe
sur un domaine différent.
Vous pouvez remplacer la valeur de X-Frame-Options
globalement en utilisant le config.action_dispatch.default_headers
réglage:
config.action_dispatch.default_headers['X-Frame-Options'] = "ALLOW-FROM https://apps.facebook.com"
Mais comment l’annulez-vous pour un seul contrôleur ou une seule action?
Si vous souhaitez supprimer complètement l'en-tête, vous pouvez créer un fichier after_action
filtre:
class FilesController < ApplicationController
after_action :allow_iframe, only: :embed
def embed
end
private
def allow_iframe
response.headers.except! 'X-Frame-Options'
end
end
Ou bien sûr, vous pouvez coder le after_action
pour définir la valeur sur quelque chose de différent:
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
Notez que vous devez vider votre cache dans certains navigateurs (Chrome for me) lors du débogage.