【问题标题】:How to "allow-from" more than one domain for "X-Frame-Options" in Rails 4 controller?如何在 Rails 4 控制器中为“X-Frame-Options”“允许”多个域?
【发布时间】:2014-12-31 23:20:34
【问题描述】:

在我正在处理的 Ruby on Rails 4 应用程序中,我需要创建一个页面,该页面将被拉入托管在 foo.bar.com 服务器上的 iframe 中,所以我有这个控制器方法:

def iframed_page
  response.headers["X-FRAME-OPTIONS"] = "ALLOW-FROM http://foo.bar.com"
end

..现在客户希望我也将http://foo.dev.bar.com 列入白名单。

我知道要设置 X-FRAME-OPTIONS,“ALLOW-FROM”选项不允许使用多个子域。但是既然这是同一个根域,有不同的子域,会不会更灵活一点呢?例如,我可以做类似的事情

response.headers["X-FRAME-OPTIONS"] = "ALLOW-FROM http://*.bar.com"

还有吗?

【问题讨论】:

  • 我读过这个问题,非常感谢。它没有解释任何关于 Ruby on Rails 的内容,或者如果您有同一个根域的两个不同子域该怎么办。
  • 当我说:您的问题并不是 Rails 特定的问题时,我并不想争论,而且上面链接的问题/答案确实提供了有关使用 Content-Security-Policy 的通配符前缀的信息。不管怎样,X-FRAME-OPTIONS 似乎不是最有前瞻性的选择。
  • 上面链接的问题清楚地表明Content-Security-Policy 不适用于所有浏览器,相关指令frame-ancestors 仅适用于Chrome 和Firefox。此外,该答案关于X-FRAME-OPTIONS 的陈述也已过时。

标签: ruby-on-rails iframe ruby-on-rails-4 http-headers x-frame-options


【解决方案1】:

您可以改用Content-Security-Policy 标头,但它是doesn't work on everything

response.headers["X-Content-Security-Policy"] = "frame-ancestors http://*.bar.com";
response.headers["Content-Security-Policy"] = "frame-ancestors http://*.bar.com";
  • Content-Security-Policy 将在现代浏览器上覆盖 X-Frame-Options
  • X-Content-Security-Policy 将覆盖 IE11 上的 X-Frame-Options

【讨论】:

猜你喜欢
  • 2018-05-04
  • 2013-08-29
  • 2017-11-10
  • 1970-01-01
  • 2012-04-29
  • 2016-12-09
  • 2014-11-14
  • 2015-06-04
  • 2017-02-13
相关资源
最近更新 更多