Snip.ly很好地检查输入的Web地址是否可以在iframe中使用。 我想用红宝石复制它。查看他们的代码,他们发送一个ajax请求到他们的服务器,并在那里他们进行验证。检查url是否可以在iframe中加载
即使广泛的谷歌搜索无法找到任何可以帮助我完成的任务。
我使用的情况是,我们让用户添加新闻列表到他们的页面,这是iframe中显示,想显示它如果输入的网址可以在iframe中使用。
Snip.ly很好地检查输入的Web地址是否可以在iframe中使用。 我想用红宝石复制它。查看他们的代码,他们发送一个ajax请求到他们的服务器,并在那里他们进行验证。检查url是否可以在iframe中加载
即使广泛的谷歌搜索无法找到任何可以帮助我完成的任务。
我使用的情况是,我们让用户添加新闻列表到他们的页面,这是iframe中显示,想显示它如果输入的网址可以在iframe中使用。
您可以通过检查X-Frame-Options
标题来找出某些情况。但正如你在评论中提到的那样,它并不是一直工作的。
根据我的经验,最好完全侧重解决问题。 如果您通过您的Rails服务器反向代理您的请求,那么您可以在iframe中始终显示任何内容。
以下是该过程的一个示例。我假设你的服务器是your-server.com
,并且用户想要在user.com/list
上列出一个页面。它的工作方式是:
https://user.com/list
https://user.com/list
执行HTTP请求到内容获取这种方法几乎一直工作,但它有其他限制: - 您应该反向代理该网页上具有相对网址的任何资产;否则的CSS /图像可能被打破 - 你必须在该网页上处理Ajax请求
您可以修复这些中,通过将HTML步骤4 之前,你可以使用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
如果该页面包含一个JS代码,确定它是否是一个iframe中,并根据结果,以触发AJAX请求服务器 ? – yeyo
@yeyo我并没有完全得到你的意思 – Alfie
很多事情像Adblock的,防火墙等,可以阻止加载URL。我认为你可以在后端做的最好的事情是向请求的url发送请求,检查是否有任何响应,并检查'X-Frame-Options'响应头。它可以阻止将响应加载到iframe中。 –