0

我正在尝试强制我的 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,我无法回答我自己的问题,但我会在几个小时内标记为已回答该功能时。

4

0 回答 0