带有iframe的导轨4不能在导轨4中工作?

时间:2013-12-04 10:49:09

标签: iframe ruby-on-rails-4

要在rails4中使用iframe,是否需要进行额外的配置?。

升级到rails 4后iframe无法在我的应用程序中工作,该应用程序在很多地方使用。 对此有何想法? 我在rails4中使用iframe和表单。还提交了jquery。

2 个答案:

答案 0 :(得分:2)

正如这里已经回答:Ruby on rails 4 app does not work in iframe

Rails 4中有一个新的默认值,默认情况下添加一个标题:

config.action_dispatch.default_headers = {
    'X-Frame-Options' => 'SAMEORIGIN'
}

如果要恢复到以前的行为,只需在config / application.rb

中添加以下内容即可
config.action_dispatch.default_headers = {
    'X-Frame-Options' => ''
}

答案 1 :(得分:2)

Rails 4 added默认X-Frame-Options HTTP标头值SAMEORIGIN。这对安全性有好处,但当您希望在action中调用iframe时,您可以这样做:


允许所有来源:

class MyController < ApplicationController
  def iframe_action
    response.headers.delete "X-Frame-Options"
    render_something
  end
end

允许特定原产地:

class MyController < ApplicationController
  def iframe_action
    response.headers["X-FRAME-OPTIONS"] = "ALLOW-FROM http://some-origin.com"
    render_something
  end
end

使用:after_filter

当您需要在action中使用多个iframe时,最好使用:after_filter制作方法并调用它:

class ApplicationController < ActionController::Base

  private
  def allow_iframe
    response.headers.delete "X-Frame-Options"
  end
end

在控制器中使用它,如下所示:

class MyController < ApplicationController
  after_filter :allow_iframe, only: [:basic_embed, :awesome_embed]

  def basic_embed
      render_something
  end

  def awesome_embed
      render_something
  end

  # Other Actions...
end

通过:Rails 4: let specific actions be embedded as iframes