Какой RFC определяет массивы, передаваемые по HTTP?

Какой RFC определяет передачу массивов по HTTP? Большинство платформ веб-приложений позволяют вам передавать массив аргументов через GET или POST. Следующий URL является примером:

http://localhost/?var[1]=one&var[2]=two&var[3]=three

RFC1738 определяет URL-адреса, однако скобка отсутствует в определении формы Бэкуса-Наура (BNF). URL. Также этот RFC не распространяется на POST. В идеале я хотел бы получить BNF для этой функции, как определено в RFC.


person rook    schedule 06.04.2013    source источник


Ответы (2)


URI определены RFC 3986.

Однако то, о чем вы спрашиваете, - это кодирование параметров формы. Для этого вам нужно найти спецификацию HTML.

person Julian Reschke    schedule 06.04.2013
comment
Я прочитал RFC3986, в нем не упоминаются массивы или скобки в URL-адресах. - person rook; 07.04.2013
comment
Ладья: да. Это вопрос отправки формы, а не синтаксиса URI. - person Julian Reschke; 08.04.2013

Согласно Википедии, единой спецификации не существует:

Несмотря на отсутствие определенного стандарта, большинство веб-платформ позволяют связать несколько значений с одним полем (например, поле1=значение1&поле1=значение2&поле2=значение3)

Эта статья в Википедии ссылается на следующий пост Stack Overflow, в котором рассматривается аналогичный вопрос: Достоверная позиция повторяющихся ключей запроса HTTP GET

Проблема здесь в том, что параметры формы могут быть такими, какими вы хотите их видеть. Некоторые веб-фреймворки остановились на key[number]=value для массивов, другие — нет. Интересно, что RFC1866 раздел 8.2.4, стр. 48 (примечание: этот RFC является историческим, а не текущим). показывает пример с одним и тем же ключом, использованным дважды в форме POST:

name=John+Doe
&gender=male
&family=5
&city=kent
&city=miami
&other=abc%0D%0Adef
&nickname=J%26D

Что касается W3C, HTML 4.01 содержит некоторую информацию о том, как кодировать параметры формы. К сожалению, это не распространяется на массивы.

На момент написания я не думаю, что есть правильный ответ на ваш вопрос - ни одна спецификация IETF RFC или W3C не определяет поведение, которое вас интересует.

(Кроме того, черновик спецификации W3C HTML JSON для отправки формы охватывает публикацию массивы, слава богу.)

person Brian Beckett    schedule 18.02.2015