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

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

概述Snip.ly很好地检查输入的网址是否可以在iframe中使用. 我想用ruby复制它.查看他们的代码,他们向他们的服务器发送ajax请求,以及他们在哪里进行验证. 即使在广泛的谷歌搜索后找不到任何可以帮助我实现这一目标的东西. 我的用例是,我们允许用户将新闻列表添加到其页面中,这些列表显示在iframe中,如果输入的网址可以在iframe中使用,则会显示该新闻列表. 您可以通过检查X-Frame 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=(.*)/,'') # reverse proxy on the url parameterend
总结

以上是内存溢出为你收集整理的ruby-on-rails – 检查是否可以在iframe中加载url全部内容,希望文章能够帮你解决ruby-on-rails – 检查是否可以在iframe中加载url所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/1265694.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-08
下一篇 2022-06-08

发表评论

登录后才能评论

评论列表(0条)

保存