У меня вопрос по поводу ошибки, с которой мы сталкиваемся:
Мы создаем QR-коды, содержащие ссылки. Эти ссылки также содержат параметры URL (например, токены), которые закодированы в base64. Кодировка Base64 может привести к строкам, которые содержат символы, такие как /
или +
. Таким образом, мы сделали декодирование URL впоследствии. Пример выглядит следующим образом, после чего qr «кодируется»:
https://foo.example.net/?t=UGxhbmV%2BRXhwcmVzcw%3D%3D
Большинство протестированных сканеров штрих-кода правильно сканируют код qr и вызывают URL с неповрежденными параметрами. Однако один из сканеров уже URL-декодирует параметр и таким образом преобразует URL в:
https://foo.example.net/?t=UGxhbmV+RXhwcmVzcw==
Поскольку мы также выполняем декодирование URL, URL преобразуется в
https://foo.example.net/?t=UGxhbmV RXhwcmVzcw==
, что приводит неверный результат на нашей стороне. (+
преобразуется в пробел из-за удвоенного url-декодирования). Теперь разработчики приложения сканера штрих-кодов (какой-то крупной компании-производителя смартфонов) говорят, что все в порядке - полностью URL-декодирование целиком.
Таким образом, мой вопрос таков: существует ли стандарт, определяющий / указывающий, «разрешено» ли URL-декодирование содержимого QR-кодов или нет?
Обновление: я думаю, что нашел часть ответ в ответ здесь .