我正在尝试在另一个网页上加载网页(不在我的服务器上托管),但由于跨网站/安全脚本,我无法加载某些网页。例如,Google不会显示在iframe中,或者我是否使用jquery:
<script>
$("#siteload").html('<object data="http://google.com">');
</script>
请注意:我不打算专门加载谷歌,只是任何不允许使用iframe的网页..
有人知道解决方法吗?如何在我的服务器上加载.html文件,这有用吗? &安培;如何?
感谢您的帮助。
答案 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)
一些可能的解决方法:
不要使用iframe,使用div和$ .load()
根据具体情况查找解决方案,如果Google使用Google Custom Search Engine代替(对于大多数事情都有iframe友好的解决方案,但找到它们需要时间)< / p>
使用代理
如果可用(Google就是这种情况),请创建自己的页面并尝试匹配原始(Google)页面的样式,然后使用API获取搜索内容
请注意,3和4可能会花费很多钱,具体取决于流量