IFrame 和 Frame 有啥区别?

Posted

技术标签:

【中文标题】IFrame 和 Frame 有啥区别?【英文标题】:What's the difference between IFrame and Frame?IFrame 和 Frame 有什么区别? 【发布时间】:2010-11-07 22:12:41 【问题描述】:

查看在我自己的订单中嵌入 3D 安全页面的选项时,我遇到了以下问题:

“一些商业网站会将完整的浏览器页面用于身份验证,而不是使用框架(不一定是 iFrame,反正这是一个不太安全的对象)。”

来自http://en.wikipedia.org/wiki/3-D_Secure

有人可以告诉我为什么 iframe 的安全性较低,并且会导致问题,而不是普通的框架?以及基本的区别是什么?

在我看来,iframe 是正确的选择。

【问题讨论】:

看看here。 <frame>html5 中已弃用,因此您不应再使用它。 【参考方案1】:

不同之处在于 iframe 能够在页面内容中“浮动”,也就是说,您可以创建一个 html 页面并在其中放置一个 iframe。这使您可以拥有一个页面并将另一个文档直接放入其中。 frameset 允许您将屏幕分成不同的页面(水平和垂直)并在每个部分显示不同的文档。

阅读IFrames security summary。

【讨论】:

这些安全问题似乎不适用于我,因为我将直接引用一个安全站点(并且我 100% 信任的站点),所以看不到攻击者如何破坏这个?【参考方案2】:

IFrame 只是一个“内部框架”。它被认为不太安全的原因(比根本不使用任何类型的框架)是因为您可以包含并非源自您的域的内容。

这意味着您应该信任 iFrame 或常规框架中包含的任何内容。

框架和 IFrame 同等安全(如果您包含来自不受信任来源的内容,则不安全)。

【讨论】:

您也可以在常规框架中包含并非源自您的域的内容。 @David,我可能应该明确说明这一点。我想我暗示了这一点,但从未真正表达过。我会更新我的答案以使其更清楚。谢谢! iframe 中的 i 实际上代表内联【参考方案3】:

iframes 经常用于包含完整的页面。当这些页面托管在另一个域上时,您会遇到跨端脚本和东西的问题。有办法解决这个问题。

框架用于将您的页面分成多个部分(例如,左侧的导航菜单)。不再推荐使用它们。

【讨论】:

"框架用于在多个部分中占卜您的页面。例如左侧的菜单。" 90 年代打来电话,希望你回来。您应该为此使用框架。几年前这样做很常见,但现在你应该大部分时间使用服务器端包含和 css 来制作你的菜单。从长远来看,它允许更大的灵活性。 velvetblues.com/web-development-blog/… 有一些关于这个主题的信息。 我知道 :) 我只是想解释一下(100 年前)框架“被”用于何处)【参考方案4】:

我能想到的唯一原因实际上是在wiki article you referenced 中提到一对...

““Visa 验证”系统受到了一些批评,因为它是 用户很难区分合法的 Visa 弹出窗口或内嵌框架,以及欺诈性钓鱼网站。”

"截至 2008 年,大多数网络浏览器不提供简单的检查方法 iframe 内容的安全证书"

如果您阅读文章中的Criticism section,它会详细说明所有潜在的安全漏洞。

否则,唯一的区别是 IFrame 是内联框架,而 FrameFrameset 的一部分。这意味着更多的布局问题!

【讨论】:

【参考方案5】:

内嵌框架只是一个“盒子”,您可以将其放置在您网站的任何位置。 框架是一堆“盒子”组合在一起,构成一个包含许多页面的网站。

【讨论】:

【参考方案6】:

基本上<frame>标签和<iframe>标签的区别是:

当我们使用<frame>标签时,网页的内容由仅使用<frame><frameset>标签创建的框架组成(不使用<body>标签 ) 为:

<html>
<head>
<title>HTML Frames</title>
</head>
<frameset rows="20%,70%,10%">
   <frame name="top" src="/html/top.html" />
   <frame name="main" src="/html/main.html" />
   <frame name="bottom" src="/html/bottom.html" />
</frameset>
</html>

当我们使用&lt;iframe&gt;时,网页内容不包含框架,网页内容是使用&lt;body&gt;标签创建的(并且不使用&lt;frame&gt;&lt;frameset&gt;标签) 为:

<html>
<head>
<title>HTML Iframes</title>
</head>
<body>
<p>See the video</p>
 <iframe   src="https://www.youtube.com/embed/2eabXBvw4oI"
    frameborder="0"    allowfullscreen>
  </iframe>
</body>
</html>

所以&lt;iframe&gt; 只是将一些其他来源的文档带到网页上。 &lt;iframe&gt; 用于指定内联框架浮动框架。万维网联盟 (W3C) 在 HTML 4.01 中包含了&lt;iframe&gt; 功能。

&lt;frameset&gt; 标签用于创建带有标签&lt;frame&gt; 的框架,而&lt;iframe&gt; 实现&lt;frame&gt;&lt;frameset&gt; 标签的功能。与&lt;frame&gt;标签不同,&lt;iframe&gt;标签也可以放在&lt;body&gt;标签内。

&lt;iframe&gt; 的放置很容易,程序员可以轻松地将&lt;iframe&gt; 标签放在其他网页标签中,如果他/她愿意,还可以添加几个&lt;iframe&gt; 标签。另一方面,在&lt;frameset&gt; 中放置&lt;frame&gt; 标签有点复杂。

注意: &lt;frame&gt; 标签和 &lt;frameset&gt; 标签在 HTML5 中已弃用

所以现在不推荐使用&lt;frame&gt;&lt;frameset&gt; 标签,因此Web 开发人员使用&lt;body&gt; 标签来创建网页内容并在网页中嵌入一些其他来源的文档&lt;iframe&gt; 标签被使用。但是即使&lt;frame&gt;标签也被用来在网页中嵌入其他来源的文档,甚至&lt;iframe&gt;标签也被用来创建框架。

【讨论】:

【参考方案7】:

虽然安全性相同,但欺诈性应用程序使用 iframe 欺骗用户可能更容易,因为他们在框架放置位置方面具有更大的灵活性。

【讨论】:

以上是关于IFrame 和 Frame 有啥区别?的主要内容,如果未能解决你的问题,请参考以下文章

frame与iframe的区别及基本用法

frame与iframe的区别及基本用法

frame和framework的区别

Frame、Iframe、Frameset 的区别

Session.getAllTrackables 和 Frame.getUpdatedTrackables 有啥区别?

html表格中frame属性box和border有啥区别