动态创建的iframe的内容是空的(content of dynamically created i

2019-07-29 04:34发布

在我的本地,我使用下面的JavaScript来创建一个iframesrc ,并将其添加到文档:

$('#preview').html('<iframe src="http://google.com/"></iframe>');

iframe的表演而不是内容。 在萤火虫,它只是:

<iframe src="http://google.com/">
    <html>
        <head></head>
        <body></body>
    </html>
</iframe>

当我执行$('iframe').attr('src','http://google.com/'); 在控制台上,浏览器加载(称“等待google.com ...”),然后似乎刷新iframe的内容。 但同样,它是空的。

如果我将其设置为本地页面,不过,在加载内容。

这是因为同样的原产地政策的? 我没有那么了解它。 我做了一些google搜索,我很困惑,因为一些网站说,这没关系包括与不属于自己的域名SRC的iframe,有的说这是不可能的。

顺便说一句,因为我仍然在本地主机上测试,将这项工作,如果我上传这地方的服务器? (但iframe的SRC仍然会在不同的域中)

救命?

Answer 1:

如果您想检查浏览器的错误控制台,你会看到这样一条消息:

拒绝了,因为显示的X型框架,选项禁止显示文件。

那么,这是不是对您的部分错误,但在谷歌的部分故意的行为。

对于这两个选项X-Frame-Options是:

  • deny -框架内没有呈现,并且
  • sameorigin -没有渲染,如果不匹配的起源

参考文献:

  • X-Frame-Options响应头,在MDN 。
  • X-Frame-Options在维基百科 。
  • 克服“显示的X框选项禁止” (这里对堆栈溢出)。


Answer 2:

是的代码,因为相同的起源政策禁止的。 阅读这里

假设你拥有该域http://www.example.com ,那么你大概可以有以下结果,当你调用通过iframe的网页:

Compared URL                               Outcome  Reason
---------------------------------------------------------------------------------------------
http://www.example.com/dir/page.html       Success  Same protocol and host
http://www.example.com/dir2/other.html     Success  Same protocol and host
http://www.example.com:81/dir2/other.html  Failure  Same protocol and host but different port
https://www.example.com/dir2/other.html    Failure  Different protocol
http://en.example.com/dir2/other.html      Failure  Different host
http://example.com/dir2/other.html         Failure  Different host (exact match required)
http://v2.www.example.com/dir2/other.html  Failure  Different host (exact match required)

现在,你在呼唤google.com,这是一个跨域的问题在你身上。 为了解决这样的问题, JSONP可以帮助你。 它采用开放式脚本策略<script>从跨域检索JSON。



文章来源: content of dynamically created iframe is empty