AMP-аналитика: переданный пользовательский агент усекается из-за метода getNameArgs
Если я передам строковое значение, содержащее ()
в собственность Vars в <amp-analytics>
компонент, строка обрезается из-за регулярного выражения в 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)
как второй)
Данные должны совпадать на 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
Даже эта точная строка усекается до Mozilla%2F5.0%20(Macintosh%3B%20Intel%20Mac%20OS%20X%2010_10_4)
если вставить прямо в объект...
Может я что-то делаю не так?
2 ответа
Эта ошибка была исправлена в этом запросе и будет выпущена в версии 1481838084444
Это похоже на ошибку. Пожалуйста, отправьте отчет об ошибке по адресу: https://github.com/ampproject/amphtml/issues/new