1

请注意:这个问题与服务器端检测页面显示在 IFrame 内没有直接关系,因为我向您展示了一个实例,看起来MDN(Mozilla 开发人员网络)的人已经在检测该内容正在传递到 iframe,但是,如果您通读此内容,我将讨论这根本与服务器端无关的可能性;这可能是某种“权利”问题,以某种我不知道的方式或方式宣布。关键是要了解已经存在的东西是如何工作的。

首先,我不想把 MDN(Mozilla 开发者网络)的内容当作我自己的。我问这个是因为我真的对此感到困惑。MDN 的人似乎已经掌握了一个很好的技巧,我很想知道它,但它可能比我意识到的要简单。

代码只有:

<iframe src="https://developer.mozilla.org/en-US/docs/HTML/HTML5"></iframe>

举个例子,这个小提琴:

http://jsfiddle.net/jfcox/D3UNZ/

您是否注意到 iframe 中没有内容?Chrome 网络选项卡上似乎没有任何与请求相关的内容。

我向你保证,这适用于“普通”网站,例如 example.org。见http://jsfiddle.net/jfcox/nPwcu/

所以,我问,他们正在做什么来检测来自 的请求iframe?是否有一些我不知道的浏览器福?奇怪的是,情况可能就是这样。来自 IE9。

为帮助保护您输入本网站的信息的安全性,此内容的发布者不允许将其显示在框架中。

哇!好的,所以也许它不是服务器端的,也许都是 Browser-Fu。即便如此,IE9 和这些其他浏览器怎么知道我不知道的?我需要查找什么来了解这个?

我有自己的怀疑,即网站根目录中有一些文件(例如crossdomain.xml用于 Flash 的文件)定义了有关内容使用或其他内容的权限,但如果是这种情况,我什至不知道从哪里开始。

4

1 回答 1

2

事实证明,这是一个非常简单的复制保护。您需要做的就是设置一个响应标头。

是的,“框架”,而不是“iframe”。

:eyeroll:

我想这个名字是有道理的,考虑到有人仍然可以尝试将旧的 HTML 4frame标签用于任何目的,我希望大多数浏览器/DOM 引擎都支持frame给定 HTML 历史的标签。Netscape早在 2.0 版就创建/支持框架,并且iframe是后来被广泛采用的纯 Microsoft 发明 IIRC。

于 2013-03-12T23:51:22.877 回答