首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Ruby on rails 4应用程序在iframe中不起作用

Ruby on rails 4应用程序在iframe中不起作用
EN

Stack Overflow用户
提问于 2013-05-15 17:12:11
回答 3查看 31.4K关注 0票数 60

我如何通过iframe将我的rails应用程序嵌入到另一个网站?

它在RoR 3上运行得很好,但在RoR 4上就不行:

代码语言:javascript
复制
<iframe src="http://myrailsapp.com/" width="100%" height="50" id="rails_iframe">error!</iframe>

我尝试在我的控制器中使用verify_authenticity_tokenprotect_from_forgery选项...看起来是别的原因(但我不确定)。

upd。示例:http://jsfiddle.net/zP329/

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-05-18 12:41:02

这与Rails4在默认情况下启用额外的安全协议有关:http://weblog.rubyonrails.org/2013/2/25/Rails-4-0-beta1/

在远程站点中断iFrames的设置是X-Frame-Options。默认设置为SAMEORIGIN,防止内容跨域加载:

代码语言:javascript
复制
config.action_dispatch.default_headers = {
    'X-Frame-Options' => 'SAMEORIGIN'
}

您可以在此处阅读有关新的默认标头的信息:http://edgeguides.rubyonrails.org/security.html#default-headers

为了允许iFrame跨域工作,您可以更改默认标头以允许跨域X-Frame。

代码语言:javascript
复制
config.action_dispatch.default_headers = {
    'X-Frame-Options' => 'ALLOWALL'
}
票数 105
EN

Stack Overflow用户

发布于 2021-06-17 20:39:09

更新:似乎ALLOW-FROM和ALLOWALL目前都是无效的"X-Frame-Options“标头值。唯一有效的两个是DENY和SAMEORIGIN,它们都不允许从另一个源访问。请参阅MDN文档:https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-Frame-Options

因此,看起来response.headers.delete "X-Frame-Options"是现在唯一能够在另一个网站上显示iframe内容的方法。但如果有人知道我所不知道的,我很乐意证明这一点。

票数 1
EN

Stack Overflow用户

发布于 2019-10-01 20:20:05

我正在使用Rails 6和Chromium 76。以前的X-Frame-Options解决方案不起作用。但我注意到,当我们将在线iframe与JS连接时,它工作得很好。所以,在我看来,我只是做了一个简单的解决方案:

代码语言:javascript
复制
<div id='iframe_wrapper' 'data-iframe-content'='<iframe src="https://host.com/"></iframe>'>
</div>

...and添加如下JS代码:

代码语言:javascript
复制
$(document).ready(function() {
  var wrapper = $('#iframe_wrapper')[0]
  wrapper.innerHTML = wrapper.attributes['data-iframe-content'].value
})
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16561066

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档