某些网站不会出现Iframe和.load()函数

时间:2015-10-23 15:09:47

标签: javascript jquery html html5 iframe

我正在尝试在另一个网页上加载网页(不在我的服务器上托管),但由于跨网站/安全脚本,我无法加载某些网页。例如,Google不会显示在iframe中,或者我是否使用jquery:

 <script>
      $("#siteload").html('<object data="http://google.com">');
    </script>

请注意:我不打算专门加载谷歌,只是任何不允许使用iframe的网页..

有人知道解决方法吗?如何在我的服务器上加载.html文件,这有用吗? &安培;如何?

感谢您的帮助。

3 个答案:

答案 0 :(得分:1)

这是有目的的,网站开发人员可以在响应中设置某些标头,以控制哪个网址(其他网站)可以在<iframe>, <frame> or <object>中加载其内容。这是一种保护您的网站免受Clickjacking攻击的方式。

例如:大多数浏览器都支持X-Frame-Options标题

X-Frame-Options有三种可能的值:

DENY
The page cannot be displayed in a frame, regardless of the site attempting to do so.

SAMEORIGIN
The page can only be displayed in a frame on the same origin as the page itself.

ALLOW-FROM uri
The page can only be displayed in a frame on the specified origin.

请注意,Chrome,Safari等不支持X-Frame-Options:Allow-From。

现代浏览器使用新的内容安全策略(CSP)处理这些问题。因此,您可以使用新标题来控制它:

  

Content-Security-Policy:frame-ancestors

所有较新浏览器都支持的CSP 2.0也完全向后兼容。

我知道这不是您问题的答案,但是这些信息可以让您了解为什么您无法将网站加载到iFrame中。

答案 1 :(得分:0)

某些网站会阻止使用iframe。谷歌就是其中之一。

编辑:我认为谷歌正在发送同一个原创设置。

答案 2 :(得分:0)

一些可能的解决方法:

  1. 不要使用iframe,使用div和$ .load()

  2. 根据具体情况查找解决方案,如果Google使用Google Custom Search Engine代替(对于大多数事情都有iframe友好的解决方案,但找到它们需要时间)< / p>

  3. 使用代理

  4. 如果可用(Google就是这种情况),请创建自己的页面并尝试匹配原始(Google)页面的样式,然后使用API​​获取搜索内容

  5. 请注意,3和4可能会花费很多钱,具体取决于流量