Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/460.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/2/ajax/6.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
Javascript 谷歌CSE X-frame-options_Javascript_Html_Google Custom Search - Fatal编程技术网

Javascript 谷歌CSE X-frame-options

Javascript 谷歌CSE X-frame-options,javascript,html,google-custom-search,Javascript,Html,Google Custom Search,我正在尝试创建一个网站的自定义搜索。我目前是一名web开发人员,负责维护多个网站。最近我注意到搜索页面上有一个问题,无法正确生成结果。我查看了一下,发现最初创建网站的人是从现有网站复制的,所以谷歌搜索字符串(在谷歌文档中称为cx)指向了错误的网站(旧网站)。所以我去了谷歌,创建了一个新的定制搜索引擎,并替换了旧的cx值。除此之外,所有代码都是相同的。我使用的是谷歌提供给你的JavaScript,而不是直接使用API。JavaScript在预定div中生成iframe,并将搜索结果嵌入到所述ifr

我正在尝试创建一个网站的自定义搜索。我目前是一名web开发人员,负责维护多个网站。最近我注意到搜索页面上有一个问题,无法正确生成结果。我查看了一下,发现最初创建网站的人是从现有网站复制的,所以谷歌搜索字符串(在谷歌文档中称为cx)指向了错误的网站(旧网站)。所以我去了谷歌,创建了一个新的定制搜索引擎,并替换了旧的cx值。除此之外,所有代码都是相同的。我使用的是谷歌提供给你的JavaScript,而不是直接使用API。JavaScript在预定div中生成iframe,并将搜索结果嵌入到所述iframe中。问题是谷歌正在发送一个X-frame-options的回复。我检查了其他站点,这些站点唯一的区别是CX stirng。他们所有的搜索功能都运行良好。如何修复此问题,使响应不同

谷歌提供的代码:

<script>
(function() {
var cx = '011369833985782852522:6v8rougwxxa';
var gcse = document.createElement('script');
gcse.type = 'text/javascript';
gcse.async = true;
gcse.src = (document.location.protocol == 'https:' ? 'https:' : 'http:') +
    '//www.google.com/cse/cse.js?cx=' + cx;
var s = document.getElementsByTagName('script')[0];
s.parentNode.insertBefore(gcse, s);
})();

(功能(){
变量cx='011369833985782852522:6v8rougwxxa';
var gcse=document.createElement('script');
gcse.type='text/javascript';
gcse.async=true;
gcse.src=(document.location.protocol=='https:'?'https:':'http:')+
'//www.google.com/cse/cse.js?cx='+cx;
var s=document.getElementsByTagName('script')[0];
s、 parentNode.insertBefore(gcse,s);
})();

我遇到了完全相同的问题,我找不到适合我的解决方案,因为我使用的是joomla网站,我对代码没有太多控制权

我找到了两种可能的解决方案,看看其中一种能否帮助您:

  • 您可以尝试在iframe的src中的地址末尾添加&output=embed,如下所示:
  • iframe src=”http://xxxxxxxxxxxxsxxxxx&output=embed"

  • 您可以尝试编辑.htaccess文件以添加允许来自google的URL的标题(请参见此处的示例)或此标题:
  • 标题始终未设置X帧选项

    最后,我创建了一个自定义模块,并添加了Google在中为我的网站提供的代码

    我不能确定其中一个是否真的有效,因为我无法测试它,但我想至少分享一下我在研究中发现的东西,也许它可以帮助你


    祝你好运

    Google CSE不再支持在IFRAME中显示结果(请参阅)


    您必须切换到自定义搜索元素()。

    问题出在哪里?@Sharky XframeOrigins response与origins相同。防止结果由iframe显示,他们提供的Javascript Genetrates只需严格按照google搜索引擎创建页面上的说明操作即可。否则,请详细描述您正在尝试进行的定制。通过阅读您的答案和评论,您似乎在说,由于XFrame的起源,谷歌定制搜索引擎不适用于任何人。请描述您所做的与说明中所说的不同之处,这使得XFrameOriginations问题更加复杂。我没有做任何不同的事情。