Разве плохо использовать специальные символы в URL? - PullRequest
1 голос
/ 17 декабря 2010

Контекст: ASP.NET MVC 2.0

Я хочу поддерживать URL следующего формата:

wowreforge.com?Exp=220,Hit<461,Mastery>Haste>Crit

Он работает как в FF, так и в IE.Они оба корректно экранируют символы при вводе.

Мой вопрос: есть ли причины не использовать приведенную выше форму URL?

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

Я думаю, что для боевого мошенника wowreforge.com? Exp = 220, Hit <461, Mastery> Haste> Crit - лучшая стратегия перековки.

Любые альтернативные идеи реализации приветствуются.

Ответы [ 3 ]

1 голос
/ 17 декабря 2010

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

Это лучше, чем пытаться угадать, какие символы в строке запроса в порядке, а какие нет.

Также обратите внимание, что эту кодировку следует применять к значениям каждого параметра строки запроса, а не к самой строке запроса whole . (в противном случае вы могли бы неправильно кодировать амперсанд, который разделяет параметры, например)

1 голос
/ 17 декабря 2010

< и > недопустимы в URL-адресе, а должно быть должно быть закодировано в процентах.

Но кроме этого, есть разница между тем, как браузер отображает URL-адреса и как они на самом деле кодируются. Например, современные браузеры отображают последовательности закодированных в процентах слов, которые представляют символы в UTF-8 как символы, которые они представляют, а не закодированные слова. Таким образом, URL, такой как http://en.wikipedia.org/wiki/%C3%9F, часто отображается как http://en.wikipedia.org/wiki/ß, хотя на самом деле он кодируется как http://en.wikipedia.org/wiki/%C3%9F.

.
0 голосов
/ 17 декабря 2010

RFC 1738 говорит, что это плохая идея:

"... Только буквенно-цифровые символы [0-9a-zA-Z], специальные символы" $ -_. +! * '(), "[не включая кавычки - ред.] и зарезервированные символы, используемые для их зарезервированных целей, могут использоваться без кодирования в URL-адресе."

Попробуйте кодировать все специальные символы, используя управляющие коды ASCII,Это безопасный способ отправки специальных символов через URL.

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