在rails应用中检测iframe请求

时间:2011-08-02 07:49:44

标签: ruby-on-rails iframe format request

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

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

由于 马库斯

2 个答案:

答案 0 :(得分:10)

当您从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的字符串。在此字符串中搜索iPhone可以告诉您iPhone正在访问您的网页。

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

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

答案 1 :(得分:1)

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

示例:

iFrame

  • <iframe src="embed-subdomain.domain.com" />而非<iframe src="domain.com" />

控制器

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