【问题标题】:How do i allow my app to be loaded in an iframe by a couple of sites?我如何允许我的应用被几个网站加载到 iframe 中?
【发布时间】:2014-06-05 13:29:00
【问题描述】:

我正在开发一个 Rails 应用程序,客户可以使用 iframe 将其嵌入到他们的网站上。我正在寻找一种只允许我的客户嵌入应用程序的方法。 我熟悉 x-frame 选项,即:

response.headers["X-Frame-Options"] = "ALLOW-FROM http://www.example.com"

(来自X-Frame-Options ALLOW-FROM a specific site allows from all

有没有办法允许多个站点?

【问题讨论】:

  • 您似乎不能为此处指定的 ALLOW-FROM 提供超过 1 个网站:blogs.msdn.com/b/ieinternals/archive/2010/03/30/…。转到该网址并搜索:Note that the Allow-From token does not support wildcards or listing of multiple origins。也看看这里:stackoverflow.com/questions/10205192/…
  • 感谢您的链接!它实际上建议了一种可以回答我的问题的设计模式,就在您建议的搜索下方。但是我需要具有 iframe 的网站的网址。我怎样才能得到这个?
  • 如果您能找到 IP 地址,您可以通过 HTTP 服务器阻止所有其他 IP
  • 感谢您的建议。不过,我不确定我所有的客户都有固定的 IP。另外我正在使用heroku,我不确定如何在那里阻止IP。
  • 我刚刚找到 request.headers['Referer']。这是否被认为是建立引用站点身份的安全方法?还是很容易伪造?

标签: ruby-on-rails iframe


【解决方案1】:

好的,Octopus-Paul 让我走上了正轨。我在 application.rb 中使用以下代码解决了这个问题:

 config.action_dispatch.default_headers = {
   referer =  request.headers['Referer']
   site = 'http://www.example.com' 

   if (referer =~ Regexp.new "\\A#{site}")
    'X-Frame-Options' => 'ALLOWALL'
   else
    'X-Frame-Options' => 'SAMEORIGIN'
   end  
  }

现在我只需要使用此代码扫描允许的站点列表,我想我已经完成了。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-18
    • 2017-11-03
    • 2021-07-08
    • 2011-08-25
    • 2014-04-22
    • 2012-02-10
    相关资源
    最近更新 更多