Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/87.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jquery-ui/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Html 如何在iframe中显示google.com?_Html - Fatal编程技术网

Html 如何在iframe中显示google.com?

Html 如何在iframe中显示google.com?,html,Html,我正在尝试将google.com放到我网站的iframe中,这与包括雅虎在内的许多其他网站都可以使用。但它不适用于谷歌,因为它只是显示一个空白的iframe。为什么它不呈现?有什么诀窍吗 我已经尝试过用通常的方式在iframe中显示网站,如下所示: <iframe name="I1" id="if1" width="100%" height="254" style="visibility:visible" src="http://www.google.com"></if

我正在尝试将google.com放到我网站的iframe中,这与包括雅虎在内的许多其他网站都可以使用。但它不适用于谷歌,因为它只是显示一个空白的iframe。为什么它不呈现?有什么诀窍吗

我已经尝试过用通常的方式在iframe中显示网站,如下所示:

<iframe name="I1" id="if1" width="100%" 
 height="254" style="visibility:visible" 
 src="http://www.google.com"></iframe>


google.com页面不会在iframe中呈现,只是空白。发生了什么事?

原因是,谷歌正在发送一个“X-Frame-Options:SAMEORIGIN”响应头。此选项可防止浏览器显示与父页面不在同一域中的iFrame


请参阅:

这并非不可能。
使用反向代理服务器处理不同来源的问题。我曾经使用Nginx和
proxy\u pass
来更改页面的url。你可以试一试


另一种方法是自己编写一个在服务器上运行的简单代理页面,只需从Google请求并将结果输出到客户端。

这并不理想,但您可以使用代理服务器,它工作正常。例如,进入hidemyas.com,将其链接放入www.google.com,并将其链接放入iframe中,即可正常工作

正如这里所概述的,因为谷歌正在发送一个“X-Frame-Options:SAMEORIGIN”响应头,所以在iframe中不能简单地将src设置为“”

如果你想将Google嵌入iframe,你可以按照sudopeople在上面的评论中的建议,使用Google自定义搜索链接,如下所示。这对我来说非常有效(将“q=”保留为空白以开始空白搜索)


编辑:

这个答案不再有效。有关如何使用google自定义搜索元素替换iframe搜索的信息和说明,请查看:

这曾经奏效,因为我用它来创建带有我自己选项的自定义谷歌搜索。谷歌对其进行了更改,并打破了我的私人定制搜索页面:(下面的示例不再有效。它对于复杂的搜索模式非常有用

<form method="get" action="http://www.google.com/search" target="main"><input name="q" value="" type="hidden"> <input name="q" size="40" maxlength="2000" value="" type="text">


我想更好的选择是只使用Curl或类似的工具。

您可以在使用YQL的工具中绕过X-Frame-Options

var iframe = document.getElementsByTagName('iframe')[0];
var url = iframe.src;
var getData = function (data) {
    if (data && data.query && data.query.results && data.query.results.resources && data.query.results.resources.content && data.query.results.resources.status == 200) loadHTML(data.query.results.resources.content);
    else if (data && data.error && data.error.description) loadHTML(data.error.description);
    else loadHTML('Error: Cannot load ' + url);
};
var loadURL = function (src) {
    url = src;
    var script = document.createElement('script');
    script.src = 'https://query.yahooapis.com/v1/public/yql?q=select%20*%20from%20data.headers%20where%20url%3D%22' + encodeURIComponent(url) + '%22&format=json&diagnostics=true&env=store%3A%2F%2Fdatatables.org%2Falltableswithkeys&callback=getData';
    document.body.appendChild(script);
};
var loadHTML = function (html) {
    iframe.src = 'about:blank';
    iframe.contentWindow.document.open();
    iframe.contentWindow.document.write(html.replace(/<head>/i, '<head><base href="' + url + '"><scr' + 'ipt>document.addEventListener("click", function(e) { if(e.target && e.target.nodeName == "A") { e.preventDefault(); parent.loadURL(e.target.href); } });</scr' + 'ipt>'));
    iframe.contentWindow.document.close();
}

loadURL(iframe.src);
var-iframe=document.getElementsByTagName('iframe')[0];
var url=iframe.src;
var getData=函数(数据){
if(data&&data.query&&data.query.results&&data.query.results.resources&&data.query.results.resources.content&&data.query.results.resources.status==200)加载HTML(data.query.results.resources.content);
else if(data&&data.error&&data.error.description)加载html(data.error.description);
else loadHTML('错误:无法加载'+url');
};
var loadURL=函数(src){
url=src;
var script=document.createElement('script');
script.src=https://query.yahooapis.com/v1/public/yql?q=select%20*%20来自%20data.headers%20其中%20url%3D%22'+encodeURIComponent(url)+'%22&format=json&diagnostics=true&env=store%3A%2F%2Fdatatables.org%2Falltableswithkeys&callback=getData';
document.body.appendChild(脚本);
};
var loadHTML=函数(html){
iframe.src='about:blank';
iframe.contentWindow.document.open();
iframe.contentWindow.document.write(html.replace(//i,'document.addEventListener(“单击”,函数(e){if(e.target&&e.target.nodeName==“A”){e.preventDefault();parent.loadURL(e.target.href);}}}});
iframe.contentWindow.document.close();
}
loadURL(iframe.src);

在此处运行它:

这里的代码:

您可以使用(自定义搜索引擎)进行求解,该搜索引擎可以轻松插入iframe。您可以创建自己的搜索引擎,搜索选定的网站或整个Google数据库

搜索结果可以根据您的喜好设置样式,也可以类似于Google样式。Google CSE可用于web和图像搜索

google.php

<script>
  (function() {
    var cx = 'xxxxxxxxxxxxxxxxxxxxxx';
    var gcse = document.createElement('script');
    gcse.type = 'text/javascript';
    gcse.async = true;
    gcse.src = 'https://cse.google.com/cse.js?cx=' + cx;
    var s = document.getElementsByTagName('script')[0];
    s.parentNode.insertBefore(gcse, s);
  })();
</script>
<gcse:searchresults-only></gcse:searchresults-only>
<iframe src="google.php?q=<?php echo urlencode('your query'); ?>"></iframe>

(功能(){
变量cx='XXXXXXXXXXXXXXXXXX';
var gcse=document.createElement('script');
gcse.type='text/javascript';
gcse.async=true;
gcse.src=https://cse.google.com/cse.js?cx=“+cx;
var s=document.getElementsByTagName('script')[0];
s、 parentNode.insertBefore(gcse,s);
})();
yourpage.php

<script>
  (function() {
    var cx = 'xxxxxxxxxxxxxxxxxxxxxx';
    var gcse = document.createElement('script');
    gcse.type = 'text/javascript';
    gcse.async = true;
    gcse.src = 'https://cse.google.com/cse.js?cx=' + cx;
    var s = document.getElementsByTagName('script')[0];
    s.parentNode.insertBefore(gcse, s);
  })();
</script>
<gcse:searchresults-only></gcse:searchresults-only>
<iframe src="google.php?q=<?php echo urlencode('your query'); ?>"></iframe>

如果您使用的是PHP,则可以使用
file\u get\u contents()
打印内容:

<?php
$page = file_get_contents('https://www.google.com');
echo $page;
?>

为什么你需要在iframe中显示Google?请不要引用我的话,但可能Google使用了类似于
window.property
的东西,或者在iframe中会破坏部分显示的东西?如果你想让Google搜索栏看到以下链接:@PaulAlanTaylor这是我客户的要求,据说他想在他的web中显示Google结果网站在iframe中很方便。只需这样做:
我认为这是非常无用的。如果有人能想出一个理由来使用该功能,除了吝啬之外,请随时告诉我。@JonHanna one不只是为了任何事联系google。你可以在
iframe
中使用此URL:或者你可以使用我的Web组件。@niutech难以置信的是,你的U带有?igu=1参数的RL有效。知道为什么吗?该选项背后的原始目的是什么吗?有趣的是,这会导致我显示为未登录,但搜索字段仍然显示我的一些实际历史搜索。因此我“有点”登录。非常奇怪。谷歌阻止了我简单地卷曲其标准搜索url的尝试:(我最终使用了“谷歌定制”它发送不同的X-Frame选项。是否有关于如何使用Nginx解决此问题的教程?Thx ScottyG!是否有添加图像结果的选项?嘿,Krzysztof Przygoda,我认为您可以使用src强制进行图像搜索,如:
http://www.google.com/search?site=imghp&tbm=isch&q=“searchstring”
但因为它使用的是search?,而不是custom?您将无法在一个环境中使用它iframe@ScottyG上面的技术仍然有效吗?我试着把这行放到一个空白页上,allI-get是一个空白的iframe,即使我支持它