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

Другие вопросы по тегам