在rails应用中检测iframe请求

我有一个iFrame工具,它应该以我的页面以外的其他格式呈现。 所以我想检测来自iFrame的请求,就像我可以从iPhone中检测到它们一样。 这可能吗?

请求标头中是否有特殊提示,我可以使用,还是可以手动输入?

谢谢马库斯

当你从iPhone收到请求时,会发送一个“用户代理” – 像Mozilla/5.0 (iPhone; U; CPU like Mac OS X; en) AppleWebKit/420+ (KHTML, like Gecko) Version/3.0 Mobile/1A543a Safari/419.3 request.user_agent变量中的Mozilla/5.0 (iPhone; U; CPU like Mac OS X; en) AppleWebKit/420+ (KHTML, like Gecko) Version/3.0 Mobile/1A543a Safari/419.3 。 在iPhone搜索此字符串可以告诉您iPhone正在访问您的页面。

iframe是一个HTML标记,用于在页面中包含其他页面(例如,Facebook like按钮使用此标记 )。 这不需要使用特定浏览器,所有现代浏览器都支持此function。 您无法在服务器端告知您的页面是否在iframe中调用。 您可以在客户端中使用某些JavaScript来查明当前页面是否在iframe中,然后向服务器发送通知。

最佳做法是为您的请求添加另一个参数,例如?iframe=1并在您的控制器中使用此参数。

一个好的做法是为嵌入添加子域。 然后,您可以向子域发出请求并评估request.host 。 当使用多个子域时,这还允许在控制器/视图中分离逻辑。

例:

的iFrame

  • 而不是

调节器

  • iframe = request.host.include?("embed-subdomain.domain")