我正在尝试强制我的 Google 自定义搜索结果使用 HTTPS 格式而不是 HTTP。我已经翻阅了 API 文档,但未能成功找出如何进行此更改。我记得旧的 GCSE 允许您指定 HTTP 或 HTTPS,但自从 Google 更新后,它看起来不再可以了。
我尝试通过http://www.google.com/cse/cse.js并将所有 HTTP 事件更改为 HTTPS,以及www.google.com/jsapi并在 V1 和 V2 方法之间切换,但我没有成功。
我已经挖掘并将每次出现的 HTTP 更改为 HTTPS,无论它是否相关,我仍然坚持所有链接到 HTTP 地址而不是所需 HTTPS 地址的搜索结果。
编辑:代码
我愿意使用 V1 或 V2,没关系。
这是V1代码:
<div id='cse' style='width: 100%;'>Loading</div>
<script src='//www.google.com/jsapi' type='text/javascript'></script>
<script type='text/javascript'>
google.load('search', '1', {language: 'en', style: google.loader.themes.DEFAULT});
google.setOnLoadCallback(function() {
var customSearchOptions = {};
customSearchOptions['overlayResults'] = true;
customSearchOptions['adoptions'] = {'layout' : 'noTop'};
var customSearchControl = new google.search.CustomSearchControl('MySearchID', customSearchOptions);
customSearchControl.setResultSetSize(google.search.Search.FILTERED_CSE_RESULTSET);
var options = new google.search.DrawOptions();
options.setAutoComplete(true);
customSearchControl.draw('cse', options);
}, true);
这是V2代码:
<script>
(function() {
var cx = 'MySearchID';
var gcse = document.createElement('script');
gcse.type = 'text/javascript';
gcse.async = true;
gcse.src = (document.location.protocol == 'https:' ? 'https:' : 'https:') +
'//www.google.com/cse/cse.js?cx=' + cx;
var s = document.getElementsByTagName('script')[0];
s.parentNode.insertBefore(gcse, s);
})();
</script>
<gcse:search></gcse:search>
我尝试更改顶部提到的 Javascript,并替换 V1 和 V2 部分中的 Javascript 源以使用我的 JS 而不是 Google 的,但这也没有解决我的问题。我可能忽略了一些东西..
有任何想法吗?
谢谢!
编辑#2
好消息,我能够弄清楚。
在使用 V1 代码时,您可以添加以下代码:
google.search.Csedr.addOverride("mysite_");
在包含此代码的行的正上方:
customSearchControl.draw('cse', options);
覆盖现有的 Google CSS。之后,我编写了自己的 CSS,如下所示:
<div class="gs-title">
<a class="gs-title" data-attr="{href:unescapedUrl.replace('http://','https://'),target:target}" data-body="html(title.replace('mySiteTitle :: ', ''))"></a>
</div>
结果仍显示 HTTP,但工具提示显示 HTTPS,并指向正确的 HTTPS 页面。
由于立即获得的声望少于 10,我无法回答我自己的问题,但我会在几个小时内标记为已回答该功能时。