iframe和外部网站

kam*_*lot 15 html iframe web

所以我有这个代码:

<iframe id="theFrame" src="http://localhost" style="width:100%;" frameborder="0">
</iframe>
Run Code Online (Sandbox Code Playgroud)

和iframe中加载的localhost网站就好了..

但是当我将src更改为外部网站时

<iframe id="theFrame" src="http://www.youtube.com" style="width:100%;" frameborder="0">
</iframe>
Run Code Online (Sandbox Code Playgroud)

该网站没有加载.

我做错了什么?我知道您可以在iframe中使用外部网站,因为Google图片搜索会这样做...

如何让我的iframe中的外部网站工作?

Joh*_*hnB 26

外部网站之所以如下:

  1. youtube.com
  2. google.com
  3. stackoverflow.com
  4. 等等

不加载在你的框架,是因为他们有意利用某种框架杀手.

示例(使用jQuery):

<style> html{display:none;} </style>
<script type="text/javascript">
    $(document).ready(function () {
        if(window.self == window.top) {
            document.documentElement.style.display = 'block'; }
        else {
       window.top.location = window.self.location; }
    });
</script>
Run Code Online (Sandbox Code Playgroud)

建议阅读:


OXi*_*GEN 7

如果您运行下面的代码片段:

<iframe src="https://www.youtube.com"></iframe>
Run Code Online (Sandbox Code Playgroud)

然后再看开发工具,会报错:

拒绝在框架中显示“ https://www.youtube.com/ ”,因为它将“X-Frame-Options”设置为“sameorigin”。

这是因为您尝试访问的站点使用X-Frame-Options标头限制嵌入(通过iframeframeembedobject)到同一来源。所以 youtube.com 可以很好地加载带有 youtube.com 页面的 iframe,但没有其他人可以。只有嵌入式站点的站点管理员才能更改该设置。

如果您拥有要嵌入的站点的管理员,则可以将主机站点列入白名单:

X-Frame-Options: allow-from https://my-host-site.com/

这必须由您尝试嵌入的页面的服务器作为 HTTP 标头发送。它不会作为metaHTML 中的标签工作head。这就是浏览器如何知道您嵌入的站点 确定托管站点以在iframe.

  • allow-from 已被弃用,并且在现代浏览器中不起作用。 (3认同)

小智 5

您可能遇到了同样的问题,很可能是iframe被X-frame-options阻止或被Deny属性阻止。例如,如果您从外部来源访问facebook,它将返回带有Google chrome的DENY响应


小智 -12

这似乎是 YouTube 独有的问题;src="http://www.mozilla.org" 在你的代码中为我工作。如果您想在 iframe 中显示 YouTube 视频,他们可能会要求您在视频页面上使用“嵌入”选项?

  • 这**不是**“YouTube 独有的问题”。 (26认同)