Comment remplacer les options X-Frame pour un contrôleur ou une action dans Rails 4

Rails 4 semble définir une valeur par défaut SAMEORIGIN pour l’en X-Frame-Options tête de réponse HTTP X-Frame-Options . Ceci est idéal pour la sécurité, mais il ne permet pas que des parties de votre application soient disponibles dans un iframe sur un autre domaine.

Vous pouvez remplacer la valeur de X-Frame-Options globalement à l’aide du paramètre config.action_dispatch.default_headers :

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

Mais comment le remplacer pour un seul contrôleur ou une seule action?

    Si vous souhaitez supprimer complètement l’en-tête, vous pouvez créer un filtre 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 

    Ou, bien sûr, vous pouvez coder l’ after_action pour définir la valeur à 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 effacer votre cache dans certains navigateurs (Chrome pour moi) lors du débogage.