【发布时间】:2014-03-02 04:59:11
【问题描述】:
我正在尝试使用
制作一些应用程序<iframe src="https://www.google.com" style="height: 100%;width: 100%"></iframe>
但由于某种原因它无法正常工作
【问题讨论】:
-
因为他们不希望您能够在您页面上的 (i) 框架中显示他们的页面,并且他们tell your browser that。
我正在尝试使用
制作一些应用程序<iframe src="https://www.google.com" style="height: 100%;width: 100%"></iframe>
但由于某种原因它无法正常工作
【问题讨论】:
大多数主要网站都阻止自己被加载到 iframe 中以避免Clickjacking。
Google 通过在其响应标头中强制执行 X-Frame-Options: SAMEORIGIN 来防止这种情况。
Gmail 也是如此。
Facebook 正在使用此响应标头 X-Frame-Options: Deny
使用 X-Frame-Options
X-Frame-Options 有三个可能的值:
拒绝
该页面无法在框架中显示,无论站点是否尝试这样做。
同源
页面只能显示在与页面本身同源的框架中。
ALLOW-FROM uri
页面只能显示在指定原点的框架中。
Twitter 曾经有过类似的另一个 JavaScript hack
<script type="text/javascript">
//<![CDATA[
if (window.top !== window.self) {
document.write = "";
window.top.location = window.self.location;
setTimeout(function () {
document.body.innerHTML = '';
}, 1);
window.self.onload = function (evt) {
document.body.innerHTML = '';
};
}
//]]>
</script>
还有雅虎!曾经有这个JavaScript
if(self!==self.top){b=function(){if(g.readyState=="complete"){f.remove(g,e,b);
两者本质上都意味着,如果在 iframe 中加载,则清除 body.innerHTML / remove。
Twitter 现在在其响应标头中强制执行 X-Frame-Options: SAMEORIGIN。
【讨论】: