URL 中带有斜杠的 AMP 分析源
AMP Analytics Source with Slash in URL
我在 AMP 页面中使用 amp-analytics
组件来跟踪页面浏览量。我的请求源(发送数据的端点)包括一个正斜杠,如下所示:
request.source.com/endpoint
AMP 不喜欢这样并给出以下错误:
amp-analytics request source must start with "https://" or "//" or be relative and served from either https or from localhost. Invalid value:
https://request.source.com%2Fendpoint/i?url=http%3A%2F%2Fcontent.url.com%3A8079%2Fregular-html-version.html&page=Sample%20document&res=2560x1440&stm=1538590011734&tz=240&aid=25&p=web&tv=amp-0.2&cd=24&cs=UTF-8&duid=amp-CGG5vSIemmau7QUKCzi1yw&lang=en-us&refr=&stm=240&vp=452x1270&e=pv
请注意,它 URL 将正斜杠编码为 %2F
。我还尝试在脚本中对其进行编码。这没有区别。
另请注意,当我从请求源中删除正斜杠(即仅使用 request.source.com
)时,它工作正常。 (但端点包含正斜杠是产品要求)。
关于如何实现这一点有什么想法吗?这是我的 AMP 代码:
<script async custom-element="amp-analytics" src="https://cdn.ampproject.org/v0/amp-analytics-0.1.js"></script>
<amp-analytics type="snowplow" id="snowplow1">
<script type="application/json">
{
"vars": {
"collectorHost": "request.source.com/endpoint",
"appId": "25"
},
"triggers": {
"trackPageview": {
"on": "visible",
"request": "pageView"
}
}
}
</script>
</amp-analytics>
你看到这个的原因是变量是 url 编码的。
您需要创建自定义扫雪机,而不是使用 amp-analytics 中的默认扫雪机实现。复制此配置:https://github.com/ampproject/amphtml/blob/0a84124122b516d33e8f815c4d7205ea92f0865b/extensions/amp-analytics/0.1/vendors/snowplow.js
然后使用此文档在您的 "endpoint" 配置对象中添加:https://github.com/ampproject/amphtml/blob/0a84124122b516d33e8f815c4d7205ea92f0865b/extensions/amp-analytics/amp-analytics.md#specifying-configuration-data
你最终会在你的 json 配置中得到这样的东西:
...
'basePrefix': 'https://${collectorHost}/endpoint/i?url=${canonicalUrl}&page=${title}&' +
...
我在 AMP 页面中使用 amp-analytics
组件来跟踪页面浏览量。我的请求源(发送数据的端点)包括一个正斜杠,如下所示:
request.source.com/endpoint
AMP 不喜欢这样并给出以下错误:
amp-analytics request source must start with "https://" or "//" or be relative and served from either https or from localhost. Invalid value:
https://request.source.com%2Fendpoint/i?url=http%3A%2F%2Fcontent.url.com%3A8079%2Fregular-html-version.html&page=Sample%20document&res=2560x1440&stm=1538590011734&tz=240&aid=25&p=web&tv=amp-0.2&cd=24&cs=UTF-8&duid=amp-CGG5vSIemmau7QUKCzi1yw&lang=en-us&refr=&stm=240&vp=452x1270&e=pv
请注意,它 URL 将正斜杠编码为 %2F
。我还尝试在脚本中对其进行编码。这没有区别。
另请注意,当我从请求源中删除正斜杠(即仅使用 request.source.com
)时,它工作正常。 (但端点包含正斜杠是产品要求)。
关于如何实现这一点有什么想法吗?这是我的 AMP 代码:
<script async custom-element="amp-analytics" src="https://cdn.ampproject.org/v0/amp-analytics-0.1.js"></script>
<amp-analytics type="snowplow" id="snowplow1">
<script type="application/json">
{
"vars": {
"collectorHost": "request.source.com/endpoint",
"appId": "25"
},
"triggers": {
"trackPageview": {
"on": "visible",
"request": "pageView"
}
}
}
</script>
</amp-analytics>
你看到这个的原因是变量是 url 编码的。
您需要创建自定义扫雪机,而不是使用 amp-analytics 中的默认扫雪机实现。复制此配置:https://github.com/ampproject/amphtml/blob/0a84124122b516d33e8f815c4d7205ea92f0865b/extensions/amp-analytics/0.1/vendors/snowplow.js
然后使用此文档在您的 "endpoint" 配置对象中添加:https://github.com/ampproject/amphtml/blob/0a84124122b516d33e8f815c4d7205ea92f0865b/extensions/amp-analytics/amp-analytics.md#specifying-configuration-data
你最终会在你的 json 配置中得到这样的东西:
...
'basePrefix': 'https://${collectorHost}/endpoint/i?url=${canonicalUrl}&page=${title}&' +
...