Горячая переписка с закодированными параметрами URL - PullRequest
8 голосов
/ 04 ноября 2011

У нас есть система, которая отправляет обычные электронные письма со ссылками, многие из которых содержат параметры в кодировке URL, такие как:

href="http://www.mydomain.com/login.aspx?returnurl=http%3A%2F%2Fwww.mydomain.com%2Fview.aspx%3Fid%3D1234%26alert%3Dtrue"

Вы можете видеть, что параметр returnurl закодирован.Однако, похоже, что большое количество наших пользователей (по-видимому, hotmail) получают электронные письма с этим декодированным параметром частично , таким как:

href="http://www.mydomain.com/login.aspx?returnurl=http://www.mydomain.com/view.aspx?view.aspx%3Fid%3D1234%26alert%3Dtrue"

Почему он будет декодироваться так?Почему только частично расшифровать ??Поэтому я понятия не имею, как с этим бороться.Я думал о кодировании base-64, но строки base64 содержат символы, которые тоже нужно декодировать ... Я думал о двойном кодировании, но тогда я не буду знать, нужно ли дважды декодировать параметр или нет ... Кто-нибудь может помочь?Спасибо.

1 Ответ

0 голосов
/ 07 сентября 2016

Одна из причин, по которой это может происходить, заключается в том, что правила url для кодирования отличаются до и после ?, поэтому, если механизм, выполняющий декодирование, делает это из «спины» правил декодирования запроса url и яблок пока он не найдет сначала ?, это может вызвать проблему, которую вы описываете ...

Не уверен, как с этим справиться, хотя, как я понимаю, система, которая выполняет это неуместное декодирование, находится вне вашего контроля. Я бы попытался как-то скрыть ? в обратном URL-запросе ...

...