1

我正在使用谷歌标签管理器:

<script>
(function(w, d, s, l, i) {
    w[l] = w[l] || [];
    w[l].push({
        'gtm.start': new Date().getTime(),
        event: 'gtm.js'
    });
    var f = d.getElementsByTagName(s)[0],
        j = d.createElement(s),
        dl = l != 'dataLayer' ? '&l=' + l : '';
    j.async = true;
    j.src = '//www.googletagmanager.com/gtm.js?id=' + i + dl;
    f.parentNode.insertBefore(j, f);
})(window, document, 'script', 'dataLayer', 'GTM-XXXX');
</script>

但是当我https://以前调用该页面时,它给了我混合内容错误:1) .... 是通过 HTTPS 加载的,但是从“ http://www.youtube.com/iframe_api ”运行了不安全的内容:这个内容也应该通过 HTTPS 加载。2) .... 已通过 HTTPS 加载,但从“ http://s.ytimg.com/yts/jsbin/www-widgetapi-vflFaZyew/www-widgetapi.js ”运行不安全的内容:也应加载此内容通过 HTTPS。

我不知道为什么或如何解决这个问题,你能帮忙吗?谢谢。

4

2 回答 2

1

您可能需要确保您的标签(尤其是自定义标签)没有指定 http 协议。您可以通过不使用 URL 的协议部分使 URL 同时在 http 和 https 上工作。例如:

//www.google.com/
于 2014-11-12T16:13:23.667 回答
0

如果您使用的是 scully,请在此处讨论此问题

Scully 使用 http 生成渲染。因此,标题中的 google 标签管理器脚本将在所有页面中包含 http 请求。

解决方案 1

正如 SanderElias 在问题中指出的那样,

A quick solution would be a plugin that scans your results, and replaces http with https,
However, we are already looking into supporting https during development, which will solve your issue too.

所以我在这个设置中使用了这个插件。

const RegexPlugin = getRegexPlugin();
setPluginConfig(RegexPlugin, {
    replacements: [{
        from: 'http:',
        to: 'https:'
    }]
});

这确实会用https替换所有http。

警告:如果您的链接只能与 http 一起使用,那将会破坏所有链接。因此,我不得不在 scully 后期渲染后手动将其改回 http。

解决方案 2

在 SSL 模式下运行 scully。

于 2022-01-30T15:42:01.817 回答