Передача URL, закодированных в качестве параметров, в контроллеры - PullRequest
1 голос
/ 29 марта 2012

У меня странная проблема. У меня есть контроллер, который должен получить URL-адрес в качестве одного из параметров. Я кодирую URL и пытаюсь вызвать контроллер следующим образом:

http://www.mysite.com/dowork/1/http%3a%2f%2fwww.otherurl.com

Однако я получаю сообщение об ошибке

В клиенте обнаружено потенциально опасное значение Request.Path (:).

Что дает? Любой способ справиться с этим БЕЗ отключения проверки?

Ответы [ 2 ]

2 голосов
/ 29 марта 2012

Если это .NET 4.0, вы можете отредактировать этот параметр конфигурации:

<system.web>
   <httpRuntime requestPathInvalidCharacters="&lt;,&gt;,%,&amp;,:,\,?" />
</system.web>

Если вы не хотите редактировать это, вы можете дополнительно закодировать ваш входящий URL - используйте пользовательскую кодировку (например, заменяяопасные символы) или используйте кодировку base64 или пропустите часть протокола, если это возможно, перед отправкой на контроллер (сбросьте также http://,, если также возможен https: //, вам нужно подумать, как это передать).

0 голосов
/ 29 марта 2012

Если вы передадите его как параметр строки запроса (? Path = ....), вы избежите проблемы, символы являются недопустимыми только как часть пути.

Если вы настаиваете на передаче данныхв качестве части пути вам нужно будет по-разному кодировать, например преобразовать строку в диапазон шестнадцатеричных значений или аналогичный.

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