我试图在我的Meteor / NodeJS网站上加载Twitter's tracking pixel。
他们提供的代码是:
!(function(e, t, n, s, u, a) {
e.twq ||
((s = e.twq = function() {
s.exe ? s.exe.apply(s, arguments) : s.queue.push(arguments);
}),
(s.version = "1.1"),
(s.queue = []),
(u = t.createElement(n)),
(u.async = !0),
(u.src = "//static.ads-twitter.com/uwt.js"),
(document.body.appendChild(u)));
})(window, document, "script");
twq("init", "MY-TRACKING-ID");
twq("track", "PageView");
它加载正常,但在控制台中返回以下错误:
拒绝执行来自' https://analytics.twitter.com/i/adsct?p_id=Twitter的脚本...'因为它的MIME类型(' text / html')不可执行,并且启用了严格的MIME类型检查。
这与问题完全相同:https://twittercommunity.com/t/analytics-tracking-pixel-error-was-blocked-due-to-mime-type-mismatch-x-content-type-options-nosniff/83583/2,但是当该线程未解决时,他现在正在该网站上运行Twitter跟踪像素,这表明它是服务器配置问题。< / p>
查看代码时,uwt.js file from Twitter它会从https://analytics.twitter.com/i/adsct请求Chrome阻止其运行的脚本。
This answer表示它是MIME类型配置问题(我运行Nginx)或标题问题,但删除X-Content-Type-Options: nosniff
并重新启动Nginx无效。
知道如何修复或更好地排除故障吗?
答案 0 :(得分:11)
TLDR:这个可怕的错误消息证明Twitter实际上正在接收转换,所以谢天谢地,不用担心。
按Twitter's Google Tag Manager instructions实施时,我收到同样的控制台错误。清除cookie对我的实例没有帮助。事实上,同样的错误出现在推特自己的帮助页面上!
此处是缩小的uwt.js脚本中的违规功能,公开为twttr.conversion.buildPixel()
:
buildPixel: function(e) {
var t = new Image;
t.src = e
},
用户代理会在设置src
属性后立即对Image
的请求进行排队,并且通常期望有效的图片作为响应。然而,Twitter的服务器提供content-type:text/html;charset=utf-8
作为响应标题。
Chrome的最新版本显然不喜欢将text/html
加载到Image
的实例中,但可能会记录更好的错误消息,特别是因为响应还包含{{1标题表示没有什么可看的。