Несколько параметров в запросе HTTP get
- Это URL-адреса вида http://asdf.com/something.do?param1=true?param2=false действует?
Я не думаю, что второй ? разрешено в допустимых URL-адресах и что вместо этого он должен быть амперсандом (&), но я не могу найти ничего об этом в http 1.1 rfc. Есть идеи?
4 ответов
это недопустимо использовать ? снова. ? следует указать начало списка параметров. если отдельные параметры.
С 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>
запрос строка. The<path>
является необязательным, как и<searchpart>
и его предшествующий "?". Если ни<path>
, ни<searchpart>
присутствует, "/" можно также опустить.внутри
<path>
и<searchpart>
компоненты, "/", ";", "?" АР зарезервированный. Символ " / " может использоваться в HTTP для обозначения иерархическая структура.
использовать & для второго и третьего
то есть http://asdf.com/something.do?param1=true¶m2=false
application / x-www-form-urlencoded
это тип контента по умолчанию. Формы, представленные с этим типом контента, должны быть закодированы следующим образом:
- имена и значения элементов управления экранируются. Символы пробелов заменяются на
+
, а затем зарезервированные символы экранируются, как описано в [RFC1738], раздел 2.2: не буквенно-цифровые символы заменяются%HH
, знак процента и две шестнадцатеричные цифры, представляющие код ASCII символа. Разрывы строк представлены в виде пар "CR LF" (т. е.%0D%0A
).- имена/значения элементов управления перечислены в порядке их отображения в документе. Имя отделяется от значения
=
и пары имя/значение отделяются друг от друга&
.
Как уже упоминалось, недопустимо использовать его снова. Однако, если у вас есть ? символ как часть значения параметра, вы можете кодировать его как %63 (так же, как символ пробела, который кодируется как %20).