仅在特定域上加载 iframe

Posted

技术标签:

【中文标题】仅在特定域上加载 iframe【英文标题】:Load iframe on specific domains only 【发布时间】:2012-07-14 17:04:46 【问题描述】:

我想允许一些网站在我的域中嵌入 iframe。但是,我不希望任何人能够在未经我许可的情况下使用 iframe 内容。如何仅允许我选择的域能够将 iframe 嵌入页面内容?

我知道 vimeo 会这样做,并允许视频所有者在他们认为不合适的某些网站上屏蔽视频。

我想要服务器端 ASP.NET 解决方案,因为可以更改 javascript 代码。但是,如果它可以使用 javascript 代码和它的安全来完成,那没关系。

据我所见,我需要以某种方式传递引荐来源网址,但这种方式可以由其他网站所有者手动更改以包含 iframe,并且它也可以在他们的网站上运行,无需获得许可.

【问题讨论】:

您可以检查 header referrer 和/或使用嵌入在 URL 或 Javascript 中的 API 或系统密钥。哦,我想要一只小狗。 它是您希望允许加框的独立页面,还是将导致您域中其他页面的加框页面,您也希望将其加框? 我允许 iframe 的标准页面 【参考方案1】:

由于它将是您在 cmets 中提到的独立页面,因此您可以通过检查 referer 属性来做到这一点。

Request.UrlReferrer

查看它是否包含您要允许的域。当嵌入器将您的页面放入 IFRAME 的 SRC 属性并首次加载页面时,此属性可用。

如果用户单击 IFRAME 内的链接,则不能保证将包含页面作为引荐来源网址传递。

如果您想允许 IFRAME 内的多个链接页面允许特定域,那么您需要坚持使用 JavaScript based solution。

但是请注意,这两种方法都不是万无一失的。

【讨论】:

以上是关于仅在特定域上加载 iframe的主要内容,如果未能解决你的问题,请参考以下文章

Wordpress:仅在点击时加载 iframe

iframe 仅在 Firefox 中不加载

仅在鼠标悬停时加载iframe

仅在模态打开时加载 iframe src

Jquery:如何从具有相同类名的多个 iframe 加载特定 iframe

动态设置 iframe 的 src 以延迟加载