11

在Ruby on Rails的应用4我的工作,我需要做的是将被拉进主持的foo.bar.com服务器上的iframe页面,所以我有这样的控制方法:如何在Rails 4控制器中为“X-Frame-Options”中的多个域“允许”?

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" 

以及?

+1

可能重复:// stackoverflow.com/questions/10205192/x-frame-options-allow-from-multiple-domains) – deefour 2014-11-04 22:14:15

+1

我读过这个问题,非常感谢。它没有解释关于Ruby on Rails的任何内容,或者如果您有两个不同的根域的子域,该怎么办。 – drumwolf 2014-11-04 22:22:12

+1

当我说:你的问题并不是真正的Rails特定的,而且上面链接的问题/答案确实使用“Content-Security-Policy”提供了有关通配符前缀的信息。无论如何,似乎“X-FRAME-OPTIONS”可能不是最具前瞻性的选择。 – deefour 2014-11-04 22:27:10

回答

11

您可以使用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
[X-框架 - 选项允许-来自多个域(HTTP的
+4

'frame-ancestors'是CSP版本2的一部分,在Internet Explorer或Edge中是[当前不支持](http://caniuse.com/#feat=contentsecuritypolicy2)。 – Sjoerd 2016-07-20 11:53:44

+1

请注意,框架祖先不会在Firefox中优先考虑,看到这个错误https://bugzilla.mozilla.org/show_bug.cgi?id=1024557,并upvote它尝试得到这个固定的。 – MicWit 2017-02-21 22:08:52

+1

根据https://developer.mozilla.org/en-US/docs/Web/HTTP/CSP:_“有时您会看到提及的X-Content-Security-Policy标头,但这是一个较旧的版本,你不会不需要再指定它了_ – Madbreaks 2017-05-23 18:39:20

相关问题