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

8

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

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

RFC1738定义了URL,但是URL的Backus-Naur Form(BNF)定义中缺少方括号。此外,该RFC并未涵盖POST。理想情况下,我希望得到在RFC中定义的此功能的BNF。

2个回答

6
根据维基百科,没有单一的规范:

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

该维基百科文章链接到以下Stack Overflow帖子,涵盖了类似的问题:重复的HTTP GET查询键的权威位置 这里的问题是表单参数可以是任何你想要的。一些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有关于如何编码表单参数的一些信息。遗憾的是,这并不涵盖数组。
在撰写本文时,我认为没有正确的答案来回答你的问题 - 没有IETF RFC或W3C规范定义您感兴趣的行为。
(顺便提一下,W3C HTML JSON表单提交草案规范涵盖了发布数组,谢天谢地。)

3

URI是由RFC 3986定义的。

然而,您所询问的是表单参数的编码。您需要查阅HTML规范来了解此内容。


我已经阅读了RFC3986,其中没有提到URL中的数组或括号。 - rook
Rook:是的。这是一个表单提交的问题,而不是URI语法的问题。 - Julian Reschke
不,不是这样的。我不需要一个HTML表单来发送带有查询参数的请求。在https://www.ietf.org/rfc/rfc1738.txt中提到了查询参数作为“searchpart”,但没有深入讨论。 - monty
@monty - HTTP和URI规范都没有定义查询参数中的格式。您可以使用任何想要的格式。但如果您想与浏览器表单进行交互,则需要遵循HTML规范。 - Julian Reschke

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接