加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby-on-rails – 检查是否可以在iframe中加载url

发布时间:2020-12-17 01:57:24 所属栏目:百科 来源:网络整理
导读:Snip.ly很好地检查输入的网址是否可以在iframe中使用. 我想用ruby复制它.查看他们的代码,他们向他们的服务器发送ajax请求,以及他们在哪里进行验证. 即使在广泛的谷歌搜索后找不到任何可以帮助我实现这一目标的东西. 我的用例是,我们允许用户将新闻列表添加到
Snip.ly很好地检查输入的网址是否可以在iframe中使用.
我想用ruby复制它.查看他们的代码,他们向他们的服务器发送ajax请求,以及他们在哪里进行验证.

即使在广泛的谷歌搜索后找不到任何可以帮助我实现这一目标的东西.

我的用例是,我们允许用户将新闻列表添加到其页面中,这些列表显示在iframe中,如果输入的网址可以在iframe中使用,则会显示该新闻列表.

解决方法

您可以通过检查X-Frame-Options标题来找出一些情况.但正如您在评论中提到的那样,它并不是一直有效.

根据我的经验,最好完全解决问题.
如果您通过rails服务器反向代理您的请求,那么您可以在iframe中随时显示任何内容.

以下是该过程的示例.我假设你的服务器是your-server.com,用户想在user.com/list上列出一个页面.它的工作方式是:

>将iframe的src设置为https://your-server.com/proxy?url=https://user.com/list`
>拦截请求,解压缩网址:https://user.com/list
>在https://user.com/list上执行HTTP请求以获取内容
>将其返回浏览器,就好像它来自您自己的服务器一样

这种方法几乎一直有效,但它有其他局限性:
– 您应该反向代理该页面上具有相对URL的任何资产;否则css / images可能会被破坏
– 您必须在该页面上处理ajax请求

您也可以通过在步骤4之前转换html来解决这些问题.
您可以将https://github.com/waterlink/rack-reverse-proxy用于步骤2和3,而不是重新实现自己的反向代理.

您可以使用config / application.rb中的以下代码进行设置:

config.middleware.insert(0,Rack::ReverseProxy) do  
  reverse_proxy_options timeout: 10 # avoids waiting for pages that take forever to load
  reverse_proxy(/proxy?url=(.*)/,'$1') # reverse proxy on the url parameter
end

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读