Почему URLEncodedFormat () в CFML кодирует допустимые символы URL? - PullRequest
6 голосов
/ 29 июня 2009

Каковы причины URLEncodedFormat() экранирования действительных символов URL?

допустимые символы:

- _ . ! ~ * " ( )

В документе CF8 сказано: «[URLEncodedFormat() экранирует] не алфавитно-цифровые символы с эквивалентными шестнадцатеричными escape-последовательностями». Однако зачем экранировать действительные символы URL?

Ответы [ 3 ]

11 голосов
/ 29 июня 2009

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

ASP.Server.URLEncode () делает то же самое, и php urlencode () делает то же самое, за исключением - и _. Кроме того, в javascript функция encodeURIComponent () будет кодировать все не алфавитно-цифровые символы в шестнадцатеричные эквиваленты.

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

1 голос
/ 29 июня 2009

Кодировка действительных символов URL вызывает ошибку или проблему?

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

Если вы используете полностью закодированный URL, шансы на это значительно уменьшаются. Только один способ увидеть это.

0 голосов
/ 30 июня 2009

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

...