QueryString искажен после URLDecode - PullRequest
       32

QueryString искажен после URLDecode

15 голосов
/ 24 сентября 2008

Я пытаюсь передать строку Base64 в веб-приложение C # .Net через QueryString. Когда строка приходит, знак «+» (плюс) заменяется пробелом. Похоже, что автоматический процесс URLDecode делает это. У меня нет контроля над тем, что передается через QueryString. Есть ли способ обработать эту сторону сервера?

Пример:

http://localhost:3399/Base64.aspx?VLTrap=VkxUcmFwIHNldCB0byAiRkRTQT8+PE0iIHBsdXMgb3IgbWludXMgNSBwZXJjZW50Lg==

Производит:

VkxUcmFwIHNldCB0byAiRkRTQT8 PE0iIHBsdXMgb3IgbWludXMgNSBwZXJjZW50Lg==

Люди предложили URLE кодировать строку запроса:

System.Web.HttpUtility.UrlEncode(yourString) 

Я не могу этого сделать, так как не могу контролировать вызывающую процедуру (которая отлично работает с другими языками).

Было также предложено заменить пробелы знаком плюс:

Request.QueryString["VLTrap"].Replace(" ", "+");

Я думал об этом, но меня это беспокоило, и я должен был упомянуть об этом, чтобы понять, что я не знаю, какие другие символы могут быть искажены в дополнение к знаку плюса.

Моя главная цель - перехватить строку QueryString до ее запуска через декодер.

С этой целью я попытался посмотреть на Request.QueryString.toString (), но он содержал ту же искаженную информацию. Есть ли способ посмотреть на необработанную строку QueryString до того, как будет URLDecoded?

После дальнейшего тестирования кажется, что .Net ожидает, что все поступающее из QuerString будет закодировано в URL, но браузер не будет автоматически кодировать запросы GET в URL.

Ответы [ 11 ]

0 голосов
/ 24 сентября 2008

Я ни в коем случае не разработчик C #, но похоже, что вам нужно URL ENCODE вашей строки Base64 перед отправкой в ​​качестве URL.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...