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】:iframe
s 经常用于包含完整的页面。当这些页面托管在另一个域上时,您会遇到跨端脚本和东西的问题。有办法解决这个问题。
框架用于将您的页面分成多个部分(例如,左侧的导航菜单)。不再推荐使用它们。
【讨论】:
"框架用于在多个部分中占卜您的页面。例如左侧的菜单。" 90 年代打来电话,希望你回来。您应该不为此使用框架。几年前这样做很常见,但现在你应该大部分时间使用服务器端包含和 css 来制作你的菜单。从长远来看,它允许更大的灵活性。 velvetblues.com/web-development-blog/… 有一些关于这个主题的信息。 我知道 :) 我只是想解释一下(100 年前)框架“被”用于何处)【参考方案4】:我能想到的唯一原因实际上是在wiki article you referenced 中提到一对...
““Visa 验证”系统受到了一些批评,因为它是 用户很难区分合法的 Visa 弹出窗口或内嵌框架,以及欺诈性钓鱼网站。”
"截至 2008 年,大多数网络浏览器不提供简单的检查方法 iframe 内容的安全证书"
如果您阅读文章中的Criticism section,它会详细说明所有潜在的安全漏洞。
否则,唯一的区别是 IFrame 是内联框架,而 Frame 是 Frameset 的一部分。这意味着更多的布局问题!
【讨论】:
【参考方案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>
当我们使用<iframe>
时,网页内容不包含框架,网页内容是使用<body>
标签创建的(并且不使用<frame>
和<frameset>
标签) 为:
<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>
所以<iframe>
只是将一些其他来源的文档带到网页上。 <iframe>
用于指定内联框架或浮动框架。万维网联盟 (W3C) 在 HTML 4.01 中包含了<iframe>
功能。
<frameset>
标签用于创建带有标签<frame>
的框架,而<iframe>
实现<frame>
和<frameset>
标签的功能。与<frame>
标签不同,<iframe>
标签也可以放在<body>
标签内。
<iframe>
的放置很容易,程序员可以轻松地将<iframe>
标签放在其他网页标签中,如果他/她愿意,还可以添加几个<iframe>
标签。另一方面,在<frameset>
中放置<frame>
标签有点复杂。
注意: <frame>
标签和 <frameset>
标签在 HTML5 中已弃用
所以现在不推荐使用<frame>
和<frameset>
标签,因此Web 开发人员使用<body>
标签来创建网页内容并在网页中嵌入一些其他来源的文档<iframe>
标签被使用。但是即使<frame>
标签也被用来在网页中嵌入其他来源的文档,甚至<iframe>
标签也被用来创建框架。
【讨论】:
【参考方案7】:虽然安全性相同,但欺诈性应用程序使用 iframe 欺骗用户可能更容易,因为他们在框架放置位置方面具有更大的灵活性。
【讨论】:
以上是关于IFrame 和 Frame 有啥区别?的主要内容,如果未能解决你的问题,请参考以下文章