Несколько параметров в запросе 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).