什么RFC定义通过HTTP传输的数组?

时间:2013-04-06 17:37:09

标签: http web-applications bnf rfc

什么RFC通过HTTP定义传递数组?大多数Web应用程序平台允许您通过GET或POST提供一组参数。以下URL是一个示例:

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

RFC1738定义了网址,但是网址的Backus-Naur表单(BNF)定义中缺少括号。此RFC也不包括POST。理想情况下,我想获得RFC中定义的此功能的BNF。

2 个答案:

答案 0 :(得分:2)

URI由RFC 3986定义。

但是,您要问的是表单参数的编码。您需要查找HTML规范。

答案 1 :(得分:2)

根据Wikipedia,没有单一的规范:

  

虽然没有明确的标准,但大多数网络框架允许多个值与单个字段相关联(例如,field1 = value1& field1 = value2& field2 = value3)

该维基百科文章链接到以下Stack Overflow帖子,其中包含类似的问题:Authoritative position of duplicate HTTP GET query keys

这里的问题是表单参数可以是您想要的任何表单。一些Web框架已经针对数组确定了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有关于如何编码表单参数的some information。遗憾的是,这不包括阵列。

在撰写本文时,我认为您的问题没有正确的答案 - 没有IETF RFC或W3C规范定义您感兴趣的行为。

(作为旁注,W3C HTML JSON form submission draft spec涵盖了发布数组,谢天谢地。)