要在rails4中使用iframe,是否需要进行额外的配置?。
升级到rails 4后iframe无法在我的应用程序中工作,该应用程序在很多地方使用。 对此有何想法? 我在rails4中使用iframe和表单。还提交了jquery。
答案 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
当您需要在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