Request.QueryString не возвращает правильное значение - PullRequest
0 голосов
/ 16 октября 2018

Я использую шифрование AES для значений URL.Я продемонстрировал здесь только один параметр, чтобы продемонстрировать проблему:

http://localhost:12345/pagename?id=ha3bEv8A%2ffs0goPGeO6NPQ%3d%3d

Request.QueryString["id"] возвращает "ha3bev8a/fs0gopgeo6npq==", что явно не соответствует значениюзашифрованного идентификатора.Что-то спотыкается о QueryString?

Ответы [ 2 ]

0 голосов
/ 16 октября 2018

Значение, которое вы видите, на самом деле правильно.Что может вас смущать, так это то, как это представлено.Значение идентификатора в URL закодировано в URL Encoding.Некоторые символы должны быть закодированы в строке URL по-другому, поскольку они являются специальными символами, которые иногда могут испортить интерпретацию строки, если они не закодированы должным образом.

Например, впредоставленная вами строка запроса: http://localhost:12345/pagename?id=ha3bEv8A%2ffs0goPGeO6NPQ%3d%3d

Символы% 2f - это способ кодирования символа '/', а% 3d - это способ кодирования символа '='.

КогдаВы получаете значение, получая Request.QueryString ["id"], оно декодирует его обратно из строки, закодированной в URL, в необработанный текст.

Проверьте эту страницу для получения дополнительной ссылки.https://www.w3schools.com/tags/ref_urlencode.asp

0 голосов
/ 16 октября 2018

Вы получаете строку запроса в кодировке URL, которую Request.QueryString["id"], похоже, декодирует для вас.Вы всегда можете просто перекодировать его:

string decodedId = Request.QueryString["id"];
string reEncodedId = HttpUtility.UrlEncode(decodedId);
...