【问题标题】:why cant iframe work with google,gmail,facebook [duplicate]为什么 iframe 不能与 google、gmail、facebook 一起使用 [重复]
【发布时间】:2014-03-02 04:59:11
【问题描述】:

我正在尝试使用

制作一些应用程序
<iframe src="https://www.google.com" style="height: 100%;width: 100%"></iframe>

但由于某种原因它无法正常工作

【问题讨论】:

  • 因为他们不希望您能够在您页面上的 (i) 框架中显示他们的页面,并且他们tell your browser that

标签: html iframe


【解决方案1】:

大多数主要网站都阻止自己被加载到 iframe 中以避免Clickjacking

Google 通过在其响应标头中强制执行 X-Frame-Options: SAMEORIGIN 来防止这种情况。
Gmail 也是如此。

Facebook 正在使用此响应标头 X-Frame-Options: Deny

According to MDN,

使用 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

【讨论】:

    【解决方案2】:

    大多数大公司的服务器拒绝接受来自除其域之外的任何人的请求,以防止 XSS(跨站点脚本),并且大多数现代浏览器也会首先拒绝发出请求,如果“域、子域或端口”不匹配也可以防止 XSS。这似乎是假的,但它试图保护公司免受 XSS、DOS(拒绝服务)或 DDOS(分布式拒绝服务)的侵害,并保护用户不使用他们所有的带宽。


    有关 XSS 的更多信息:here
    有关 DOS 和 DDOS 的更多信息:here

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-10-22
      • 2019-04-08
      • 1970-01-01
      • 1970-01-01
      • 2017-08-25
      • 1970-01-01
      • 2014-04-13
      相关资源
      最近更新 更多