google-tag-manager - ec.js 可以用服务器端 gtm 代理吗?
问题描述
想知道是否只有 gtm.js 和 analytics.js 可以通过 gtm 服务器代理?在谷歌文档上找不到任何关于此的信息。此外,尝试使用服务器端 gtm 获取它时出现错误 404。
解决方案
有一个错误,插件/ua/ec.js 将通过https://your.domain/plugins/ua/ec.js获取
发生这种情况时,您必须选择该客户端请求并手动返回脚本(通过在服务器端容器中编写客户端模板)。
找到了一个带有代码示例的存储库,它缩短了我本来可以使用的时间。信用:https ://gist.github.com/mbaersch/e94e2499ea5bb761bf81878d815fd890#file-fix-ecjs-client-tpl 这里是重要的部分:
const setResponseBody = require('setResponseBody');
const setResponseHeader = require('setResponseHeader');
const setResponseStatus = require('setResponseStatus');
const sendHttpGet = require('sendHttpGet');
const templateDataStorage = require('templateDataStorage');
const returnResponse = require('returnResponse');
const key = "ec.js";
if (require('getRequestPath')() === '/plugins/ua/ec.js') {
require('claimRequest')();
setResponseHeader('content-type', 'application/javascript');
const cachedBody = templateDataStorage.getItemCopy(key);
if (cachedBody) {
setResponseBody(cachedBody);
setResponseStatus(200);
returnResponse();
} else {
sendHttpGet('https://www.google-analytics.com/plugins/ua/ec.js', (statusCode, headers, body) => {
templateDataStorage.setItemCopy(key, body);
setResponseBody(body);
setResponseStatus(statusCode);
returnResponse();
});
}
}
推荐阅读
- junit - 如何在 Apache Flink 中使用 jsonobject 测试数据流
- spring - 揭秘 Spring 框架
- python - Openwhisk 调用操作错误:“错误”:“操作未返回字典。”
- javascript - 通过 npm 安装包,得到 'This dependency was not found:' 错误
- python - 逆变换在 LSTM 预测中引发错误
- java - 当第一个字节为负时,Int8 数组到带符号的十六进制字符串不起作用
- php - firebase 推送通知“错误”:使用 codeigniter 的“InvalidRegistration”
- asp.net-core - 为什么我的 Azure Pipeline 作业失败并出现错误 NU1101?
- powershell - Powershell【System.Windows.Forms.SendKeys】,发送shift+windowsKey+rightArrow组合
- awk - 如何仅在awk中的特定行(模式)之后打印行?