AMP-analytics: 由于 getNameArgs 方法,传递的用户代理被截断
AMP-analytics: Passing useragent is truncated due to getNameArgs method
如果我将包含 ()
的字符串值传递给 <amp-analytics>
组件中的变量 属性,由于 regex 中的 regex 字符串被截断14=] 字符串方法。
例如:
从请求 headers 传递用户代理,呈现如下:
"vars": {
"userAgentHeader": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/53.0.2785.116 Safari/537.36"
}
但将作为 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_4)
在分析请求中传递
这是因为在 encodeVars_
the raw value is passed to getNameArgs_
中,其正则表达式 (([^(]*)(\([^)]*\))?
) 匹配(Mozilla/5.0
作为第一个匹配项,(Macintosh; Intel Mac OS X 10_10_4)
作为第二个匹配项)
数据需要在 AMP 和主站点上匹配 - 所以即使我可以使用 Java URLEncoder (UTF-8),它将对括号进行编码,等效的 JS encodeURIComponent() 不编码括号 因此我需要转换回 .所以正则表达式仍然会匹配等效的编码。
使用 URLEncoder 将此作为请求中的查询参数(双重编码...):
Mozilla%252F5.0%2B%2528Macintosh%253B%2BIntel%2BMac%2BOS%2BX%2B10_10_4%2529%2BAppleWebKit%252F537.36%2B%2528KHTML%252C%2Blike%2BGecko%2529%2BChrome%252F53.0.2785.116%2BSafari%252F537.36
与普通 GA 请求相比:
Mozilla%2F5.0%20(Macintosh%3B%20Intel%20Mac%20OS%20X%2010_10_4)%20AppleWebKit%2F537.36%20(KHTML%2C%20like%20Gecko)%20Chrome%2F53.0.2785.116%20Safari%2F537.36
如果直接粘贴到 object...
,即使那个确切的字符串也会被截断为 Mozilla%2F5.0%20(Macintosh%3B%20Intel%20Mac%20OS%20X%2010_10_4)
也许我做错了什么?
这似乎是一个错误。请在以下网址提交错误报告:https://github.com/ampproject/amphtml/issues/new
这是一个错误,已在此 pull request 中修复,将在 1481838084444
版本中发布
如果我将包含 ()
的字符串值传递给 <amp-analytics>
组件中的变量 属性,由于 regex 中的 regex 字符串被截断14=] 字符串方法。
例如:
从请求 headers 传递用户代理,呈现如下:
"vars": {
"userAgentHeader": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/53.0.2785.116 Safari/537.36"
}
但将作为 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_4)
这是因为在 encodeVars_
the raw value is passed to getNameArgs_
中,其正则表达式 (([^(]*)(\([^)]*\))?
) 匹配(Mozilla/5.0
作为第一个匹配项,(Macintosh; Intel Mac OS X 10_10_4)
作为第二个匹配项)
数据需要在 AMP 和主站点上匹配 - 所以即使我可以使用 Java URLEncoder (UTF-8),它将对括号进行编码,等效的 JS encodeURIComponent() 不编码括号 因此我需要转换回 .所以正则表达式仍然会匹配等效的编码。
使用 URLEncoder 将此作为请求中的查询参数(双重编码...):
Mozilla%252F5.0%2B%2528Macintosh%253B%2BIntel%2BMac%2BOS%2BX%2B10_10_4%2529%2BAppleWebKit%252F537.36%2B%2528KHTML%252C%2Blike%2BGecko%2529%2BChrome%252F53.0.2785.116%2BSafari%252F537.36
与普通 GA 请求相比:
Mozilla%2F5.0%20(Macintosh%3B%20Intel%20Mac%20OS%20X%2010_10_4)%20AppleWebKit%2F537.36%20(KHTML%2C%20like%20Gecko)%20Chrome%2F53.0.2785.116%20Safari%2F537.36
如果直接粘贴到 object...
,即使那个确切的字符串也会被截断为Mozilla%2F5.0%20(Macintosh%3B%20Intel%20Mac%20OS%20X%2010_10_4)
也许我做错了什么?
这似乎是一个错误。请在以下网址提交错误报告:https://github.com/ampproject/amphtml/issues/new
这是一个错误,已在此 pull request 中修复,将在 1481838084444