Я пытаюсь отправить сообщение GET, содержащее строки с амперсандами и не могу понять, как экранировать амперсанд в URL.
Пример:
http://www.example.com?candy_name=M&M
result => candy_name = M
Я также попробовал:
http://www.example.com?candy_name=M\&M
result => candy_name = M\\
Я использую URL-адреса вручную, поэтому мне просто нужны правильные символы.
Я не могу использовать любые библиотеки. Как это можно сделать?
http
url
get
query-string
query-parameters
tomermes
источник
источник
A potentially dangerous Request.Path value was detected from the client (&).
Это относится не только к амперсанду в URL, но и ко всем зарезервированным символам . Некоторые из которых включают в себя:
Идея та же, что и в кодировании
&
HTML-документа, но контекст изменился и теперь находится внутри URI, в дополнение к HTML-документу. Таким образом, процентное кодирование предотвращает проблемы с синтаксическим анализом в обоих контекстах.Место, где это очень удобно, это когда вам нужно поместить URL внутри другого URL. Например, если вы хотите опубликовать статус в Twitter:
В моем твите много зарезервированных символов, а именно
?'():/
, поэтому я закодировал все значениеstatus
параметра URL. Это также полезно при использованииmailto:
ссылки , которые имеют тело сообщения или предмет, потому что вам нужно для кодированияbody
иsubject
параметры , чтобы сохранить разрывы строк, амперсанд и т.д. неповрежденными.http://en.wikipedia.org/wiki/Percent-encoding#Percent-encoding_reserved_characters
источник
! ' ( ) *
не URL-адреса, закодированные с помощьюencodeURIComponent
.Попробуйте использовать
http://www.example.org?candy_name=M%26M
.Смотрите также эту ссылку и некоторую дополнительную информацию о Википедии .
источник
Вы можете использовать символ% для «экранирования» символов, которые не разрешены в URL. См. [RFC 1738].
Таблица значений ASCII на http://www.asciitable.com/ .
Вы можете видеть, что
&
это 26 в шестнадцатеричном формате, поэтому вам нужно M% 26M.источник
Это может помочь, если кто-то хочет это в PHP
источник
Если вы не можете использовать какие-либо библиотеки для кодирования значения, http://www.urlencoder.org/ или http://www.urlencode-urldecode.com/ или ...
Просто введите значение "M & M", а не полный URL ;-)
источник
Я хотел бы добавить небольшой комментарий к решению Blender.
Вы можете сделать следующее:
Что выводит:
Самое замечательное в этом - это работает не только для &, но и для любого особенного персонажа.
Например:
Выходы:
источник
Вы можете скорее передать свои аргументы, используя эту функцию encodeURIComponent, чтобы вам не пришлось беспокоиться о передаче каких-либо специальных символов.
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/encodeURIComponent
источник