在Chrome中加载analytics.js时重定向出现307应该怎么解决?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (129)

我正在构建一个网络应用程序,并使用Google Analytics(analytics.js)进行分析。我最近注意到分析在Chrome中无法正常工作。

使用标准代码片段在单独的模块中加载分析,并通过requirejs加入。我已验证此脚本按预期运行并执行分析代码片段。

当我检查Firefox中的网络流量时,我可以看到分析脚本按预期从Google加载(HTTP 200响应):

但是当我在Chrome中运行完全相同的页面时,我得到一个指向about:blank的HTTP 307响应,并且分析无法运行:

但是如果我将分析网址直接粘贴到Chrome地址栏中,则会找到该脚本。如何解决它?

提问于
用户回答回答于

可以找出哪个扩展触发了重定向,如下所示:

  1. 访问 chrome://net-internals/#events
  2. 触发请求(在情况下,谷歌分析)。
  3. 返回到chrome://net-internals/#events标签并查找与请求相匹配的URL_REQUEST(可以使用搜索框来过滤搜索)。
  4. 点击条目在右侧显示日志。将看到关于请求的扩展名,扩展名和其他信息:
t=7910 [st=0] +REQUEST_ALIVE  [dt=6]
t=7910 [st=0]   +URL_REQUEST_DELEGATE  [dt=5]
t=7910 [st=0]      DELEGATE_INFO  [dt=5]
                   --> delegate_info = "extension [Name of extension]"
t=7915 [st=5]      CHROME_EXTENSION_REDIRECTED_REQUEST
                   --> extension_id = "ebmlimjkpnhckbaejoagnjlgcdhdnjlb"
t=7915 [st=5]   -URL_REQUEST_DELEGATE
t=7915 [st=5]   +URL_REQUEST_START_JOB  [dt=1]
                 --> load_flags = 339804160 (BYPASS_DATA_REDUCTION_PROXY | MAYBE_USER_GESTURE | REPORT_RAW_HEADERS | VERIFY_EV_CERT)
                 --> method = "GET"
                 --> priority = "LOW"
                 --> url = "https://www.google-analytics.com/analytics.js"
t=7915 [st=5]      URL_REQUEST_REDIRECT_JOB
                   --> reason = "Delegate"
t=7915 [st=5]      URL_REQUEST_FAKE_RESPONSE_HEADERS_CREATED
                   --> HTTP/1.1 307 Internal Redirect
                       Location: about:blank
                       Non-Authoritative-Reason: Delegate

在此日志示例中,名称为“[扩展名]”和扩展名“ebmlimjkpnhckbaejoagnjlgcdhdnjlb”的扩展名将该请求重定向。找到扩展名和/或ID后,可以访问chrome://extensions并禁用或删除修改请求的扩展。

用户回答回答于

307重定向的原因更为平淡无奇。出于使用协议相关URL的习惯,我已经从Google Universal Analytics的嵌入脚本中的URL中移除了该协议,并将其更改https://www.google-analytics.com/analytics.js//www.google-analytics.com/analytics.js

例如:

(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){ (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o), m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m) })(window,document,'script','https://www.google-analytics.com/analytics.js','ga');

这是不明智的,因为谷歌显然只通过https服务脚本和跟踪请求。因此,在首次嵌入脚本时以及在后续跟踪请求中,删除协议都会导致重定向。

所属标签

可能回答问题的人

  • 优惠活动秘书

    0 粉丝2 提问7 回答
  • 天使的炫翼

    17 粉丝531 提问6 回答
  • 最爱开车啦

    8 粉丝503 提问6 回答
  • uncle_light

    5 粉丝518 提问6 回答

扫码关注云+社区

领取腾讯云代金券