Если я передать строку, содержащую ()
к VARS собственности в <amp-analytics>
компонента, строка усекается из-за regex в методе getNameArgs_
строки.AMP-аналитика: Передача UserAgent усекается из-за способа getNameArgs
Например:
Передача пользовательского агента из заголовков запроса, оказывает, как так:
"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_
на необработанное значение передается в getNameArgs_
, чье регулярное выражение (([^(]*)(\([^)]*\))?
) соответствует (Mozilla/5.0
в качестве первого совпадения и (Macintosh; Intel Mac OS X 10_10_4)
как второе)
Данные должны соответствовать по АМФ и на основном сайте - так что даже если я мог бы использовать 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
Даже эта точная строка усекается до Mozilla%2F5.0%20(Macintosh%3B%20Intel%20Mac%20OS%20X%2010_10_4)
, если она вставлена непосредственно в объект ...
Возможно, я делаю что-то совершенно не так?
AMP Версия 1477334765771 – Glo