Двойное/неполное Кодирование URL Параметра

Мне удалось решить эту проблему, отредактировав источник BottomSheetBehavior. Мое решение немного хакерское. Отправьте электронное письмо, если вам нужен отредактированный класс.

7
задан Boris Callens 28 October 2008 в 11:35
поделиться

8 ответов

Другие AS упомянули, если Вы кодируете свою строку сначала, Вы избегаете проблемы.

Платформа MVC кодирует символы, что она знает, что должна закодировать, но оставляющий тех, которые являются допустимыми символами URL (например, и %? */). Это вызвано тем, что это допустимые символы URL, хотя они - специальный chracters в URL, который не мог бы достигнуть результата, который Вы после.

1
ответ дан 7 December 2019 в 16:47
поделиться

Попытайтесь пользоваться библиотекой Microsoft Anti-Cross Site Scripting. Это содержит, несколько Кодируют методы, которые кодируют все символы (включая # и символы на других языках). Что касается декодирования, браузер должен обработать закодированный URL очень хорошо, однако если необходимо вручную декодировать URL, используйте Uri. UnescapeDataString

Надежда, которая помогает.

0
ответ дан 7 December 2019 в 16:47
поделиться

Выход вперед slahes и точки в части пути URL запрещается соображением безопасности (althrough, это работает в моно).

0
ответ дан 7 December 2019 в 16:47
поделиться

С помощью параметры нужно оставить Uri.EscapeDataString:

            string url = string.Format("http://www.foo.bar/page?name={0}&address={1}",
                Uri.EscapeDataString("adlknad /?? lkm#"),
                Uri.EscapeDataString(" qeio103 8182"));

            Console.WriteLine(url);
            Uri uri = new Uri(url);
            string[] options = uri.Query.Split('?','&');
            foreach (string option in options)
            {
                string[] parts = option.Split('=');
                if (parts.Length == 2)
                {
                    Console.WriteLine("{0} = {1}",parts[0],
                        Uri.UnescapeDataString(parts[1]));
                }
            }
2
ответ дан 7 December 2019 в 16:47
поделиться

Я видел подобные сообщения на этом. Также меня, это похоже на дефект в MVC. Функцию более соответственно назвали бы "BuildUrlFromEncodedExpression". То, что хуже, то, что вызванная функция должна декодировать свои входные параметры.Тьфу.

Если существует какое-либо перекрытие между символами, закодированными BuildUrlFromExpression () и символами, закодированными вызывающей стороной (кто, я думаю, мог бы справедливо просто закодировать любого неалфавитно-цифрового для пользы простоты), затем, у Вас есть потенциал для противных ошибок.

0
ответ дан 7 December 2019 в 16:47
поделиться

HTML. BuildUrlFromExpression должен быть зафиксирован затем, утверждал бы, что этот восходящий поток к проекту MVC... альтернативно делает кодирование к строке прежде, чем передать BuildUrlFromExpression и декодирует его, когда он возвращается с другой стороны.

Это не может быть с готовностью закрепляемым, поскольку IIS может обрабатывать декодирование строки URL, заранее..., возможно, должен сделать еще некоторое усовершенствованное кодирование/декодирование для альтернативных символов пути в служебных методах и декодировать от Вашего имени выход.

0
ответ дан 7 December 2019 в 16:47
поделиться

Сервер. URLEncode или HttpServerUtility. UrlEncode

Я вижу то, что Вы говорите теперь - я не понял, что вопрос был характерен для MVC. Похож на ограничение той части платформы MVC - особенно BuildUrlFromExpression делает некоторое кодирование URL, но это знает, что также нуждается в некоторых из тех punctation как часть URL платформы.

И также к сожалению, URLEncoding не производит инвариант, т.е.

URLEncode(x) != URLEncode(URLEncode(x))

Не был бы это быть хорошим. Затем Вы могли предварительно закодировать свои переменные, и они не будут двойные закодированный.

Существует, вероятно, лучшая практика платформы MVC ASP.NET для этого. Я предполагаю другую вещь, которую Вы могли сделать, кодируют в base64 или что-то, что является URLEncode-инвариантным.

0
ответ дан 7 December 2019 в 16:47
поделиться

Вы попытались использовать Server.UrlEncode() метод, чтобы сделать кодирование, и Server.UrlDecode() метод для декодирования?

У меня не было проблем с использованием его для передающих объектов.

0
ответ дан 7 December 2019 в 16:47
поделиться
Другие вопросы по тегам:

Похожие вопросы: