Что такое допустимая строка запроса URL?
какие символы разрешены в строке запроса URL?
должны ли строки запроса следовать определенному формату?
3 ответов
Per http://tools.ietf.org/html/rfc3986
В разделе 2.2 зарезервированные символы перечислены следующие символы:
reserved = gen-delims / sub-delims
gen-delims = ":" / "/" / "?"/ "#" / "[" / "]" / "@"
sub-delims ="!"/ "$" / "&" / "’" / "(" / ")" / "*" / "+" / "," / ";" / " = "
спецификация затем говорит:
Если данные для компонента URI будет конфликтовать с зарезервированным персонажем назначение в качестве разделителя, то конфликтующие данные должны быть процент-кодируется перед формированием URI.
далее в разделе 2.3 неограниченные символы перечислены следующие:
unreserved = Альфа / цифра /" -"/"."/ "_" / "~"
Википедия имеет ваш ответ:http://en.wikipedia.org/wiki/Query_string
"кодировка URL: некоторые символы не могут быть частью URL (например, пробел), а некоторые другие символы имеют особое значение в URL: например, символ # может использоваться для дальнейшего указания подраздела (или фрагмента) документа; символ = используется для отделения имени от значения. Для удовлетворения этих ограничений может потребоваться преобразовать строку запроса. Это можно сделать с помощью схемы, известной как кодировка URL.
в частности, кодирование строки запроса использует следующие правила:
- буквы (A-Z и a-z), цифры (0-9) и символы '.", "- ", "~"и" _ " остаются как есть
- пробел закодирован как " + " или %20[нужная цитата]
- все остальные символы кодируются как % FF шестнадцатеричное представление с любыми не-ASCII символами, сначала закодированными как UTF-8 (или другие указанные кодировка)
октет, соответствующий символу Тильды ( " ~ " ), часто кодируется как "%7E" более старыми реализациями обработки URI; "%7E" может быть заменен на"~" без изменения его интерпретации. Кодировка пространства как " + "и выбор символов" как есть " отличает эту кодировку от RFC 1738."
Что касается формата, строки запроса-это пары имя-значение. В ? отделяет строку запроса от URL-адреса. Каждая пара значений имени разделяется амперсанд ( & ), в то время как имя (ключ) и значение разделены знаком равенства (=). например. http://domain.com?key=value&secondkey=secondvalue
под структура в Википедии ссылка я предоставил:
- вопросительный знак используется в качестве разделителя и не является частью строки запроса.
- строка запроса состоит из ряда пар "поле-Значение"
- в каждой паре имя и значение поля разделены знаком равенства"=".
- ряд пар разделен амперсандом, " & " (или точкой с запятой,"; " для URL-адресов, встроенных в HTML и не генерируемых a ...; смотреть ниже.)
- W3C рекомендует, чтобы все веб-серверы поддерживали разделители с запятой в дополнение к разделителям амперсандов[6], чтобы разрешить строки запроса application/x-www-form-urlencoded в URL-адресах в HTML-документах без необходимости избегать амперсандов сущности.
эта ссылка имеет ответ и форматированные значения, которые вам нужны.
https://perishablepress.com/url-character-codes/
для вашего удобства, вот список:
< %3C
> %3E
# %23
% %25
{ %7B
} %7D
| %7C
\ %5C
^ %5E
~ %7E
[ %5B
] %5D
` %60
; %3B
/ %2F
? %3F
: %3A
@ %40
= %3D
& %26
$ %24
+ %2B
" %22
space %20