2016-11-03 11 views
1

Если я передать строку, содержащую () к 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), если она вставлена ​​непосредственно в объект ...

Возможно, я делаю что-то совершенно не так?

+0

AMP Версия 1477334765771 – Glo

ответ

1

Это была ошибка и была исправлена ​​в этом pull request и будет выпущен в версии 1481838084444