Несколько параметров в запросе 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 для обозначения иерархическая структура.

на часть поиска / часть запроса описана вот!--17-->.


использовать & для второго и третьего

то есть http://asdf.com/something.do?param1=true&param2=false


application / x-www-form-urlencoded

это тип контента по умолчанию. Формы, представленные с этим типом контента, должны быть закодированы следующим образом:

  1. имена и значения элементов управления экранируются. Символы пробелов заменяются на +, а затем зарезервированные символы экранируются, как описано в [RFC1738], раздел 2.2: не буквенно-цифровые символы заменяются %HH, знак процента и две шестнадцатеричные цифры, представляющие код ASCII символа. Разрывы строк представлены в виде пар "CR LF" (т. е. %0D%0A).
  2. имена/значения элементов управления перечислены в порядке их отображения в документе. Имя отделяется от значения = и пары имя/значение отделяются друг от друга &.

- application / x-www-form-urlencoded


Как уже упоминалось, недопустимо использовать его снова. Однако, если у вас есть ? символ как часть значения параметра, вы можете кодировать его как %63 (так же, как символ пробела, который кодируется как %20).