Ben*_*enj 73 javascript google-analytics google-chrome
我正在构建一个Web应用程序并使用Google Analytics(analytics.js)进行分析.我最近注意到分析在Chrome中无法正常运行.
我在一个单独的模块中使用标准代码片段加载分析,并通过requirejs包含.我已经验证此脚本按预期运行并执行分析代码段.
当我检查Firefox中的网络流量时,我可以看到分析脚本是按预期从Google加载的(HTTP 200响应):

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

但是,如果我将分析网址直接粘贴到Chrome地址栏中,则会找到该脚本.任何想法在这里发生了什么,或如何解决它?
Rob*_*b W 177
307 Internal Redirectwith Non-Authorative-Reason: Delegate表示Chrome扩展程序通过webRequest或声明性webRequest扩展API 拦截和修改(重定向)请求.
您可以找到触发重定向的扩展名,如下所示:
chrome://net-internals/#eventschrome://net-internals/#events选项卡,查找与您的请求匹配的URL_REQUEST(您可以使用搜索框过滤搜索).
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
在此日志示例中,名为"[扩展名称]"和扩展ID"ebmlimjkpnhckbaejoagnjlgcdhdnjlb"的扩展名重定向了请求.找到扩展名和/或ID后,您可以访问chrome://extensions并禁用或删除修改请求的扩展名.
就我而言,307重定向的原因更为平淡无奇.出于使用协议相对URL的习惯,我已从Google Universal Analytics的嵌入脚本中删除了协议,更改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)})(窗口,文档,'脚本','
https://www.google-analytics.com/analytics的.js', 'GA');
这是不可取的,因为Google显然仅通过https提供脚本和跟踪请求.因此,删除协议会在首次嵌入脚本时以及任何(!)后续跟踪请求中导致重定向.此外,正如Paul Irish在他关于协议相对URL的规范性帖子的更新中所述,这种技术不再受到鼓励,或者确实具有以下优点:
现在,每个人都鼓励使用SSL,并且没有性能问题,这种技术现在已成为一种反模式.如果您需要的资产在SSL上可用,则始终使用https:// asset.
| 归档时间: |
|
| 查看次数: |
30557 次 |
| 最近记录: |