如何在Rails 4中重写控制器或动作的X-Frame-Options
Rails 4似乎为X-Frame-Options
HTTP响应头设置了SAMEORIGIN
的默认值。 这对安全性很好 ,但是不允许您的应用的某些部分在不同域的iframe
可用。
您可以使用config.action_dispatch.default_headers
设置覆盖全局X-Frame-Options
的值:
config.action_dispatch.default_headers['X-Frame-Options'] = "ALLOW-FROM https://apps.facebook.com"
但是,你如何覆盖它只是一个单一的控制器或行动?
如果您想完全删除标题,则可以创build一个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
或者,当然,您可以编写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
请注意,您需要在debugging时清除某些浏览器中的caching(Chrome for me)。