Несколько параметров в http-запросе get
-
03-07-2019 - |
Вопрос
Являются URL-адресами формы http://asdf.com/something.do?param1=true ?параметр 2=false действительный?
Я не думаю, что второе?разрешено в допустимых URL-адресах и что вместо этого это должен быть амперсанд (&), но я не могу найти что-либо об этом в http 1.1 rfc.Есть какие-нибудь идеи?
Решение
Недопустимо использовать? снова. ? должен указывать начало списка параметров. & Усилитель; следует разделить параметры. Р>
Из RFC 3986 :
URI = scheme ":" hier-part [ "?" query ] [ "#" fragment ]
Из RFC 1738 :
URL-адрес HTTP принимает форму:
http:// <host> : <port> / <path> ? <searchpart>
где
<host>
и<port>
соответствуют описанию в разделе 3.1. Если:<port>
опущен, порт по умолчанию равен 80. Нет имени пользователя или пароля позволил.<path>
- это селектор HTTP, а<searchpart>
- это запрос строка. <=> не является обязательным, как и <=> и его предыдущий "? " ;. Если ни <=>, ни <=> нет, то & Quot; / & Quot; также может быть опущен.В компонентах <=> и <=> " / " ;, " ;; " ;, "? " являются зарезервированный. & Quot; / & Quot; символ может использоваться в HTTP для обозначения иерархическая структура.
Другие советы
используйте & для второго и третьего
заявка/x-www-form-urlencoded
Это тип контента по умолчанию.Формы, отправляемые с этим типом контента, должны быть закодированы следующим образом:
- Имена и значения элементов управления экранируются.Символы пробела заменяются на
+
, а затем зарезервированные символы экранируются, как описано в [RFC1738], раздел 2.2:Не буквенно-цифровые символы заменяются на%HH
, знак процента и две шестнадцатеричные цифры, представляющие ASCII-код символа.Разрывы строк представлены в виде пар "CR LF" (т.е.,%0D%0A
).- Имена/значения элементов управления перечислены в том порядке, в котором они отображаются в документе.Имя отделяется от значения символом
=
а пары имя / значение отделены друг от друга&
.
Как уже упоминалось, его нельзя использовать снова. Однако, если у вас есть? символ как часть значения параметра, вы можете кодировать его как% 63 (точно так же, как символ пробела, который кодируется как% 20).