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

roo*_*ook 5 web-applications http bnf rfc

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

http://localhost/?var[1]=one&var[2]=two&var[3]=three
Run Code Online (Sandbox Code Playgroud)

RFC1738定义了 URL,但是 URL 的 Backus–Naur Form(BNF) 定义中缺少括号。此外,此 RFC 不包括 POST。理想情况下,我希望获得 RFC 中定义的此功能的 BNF。

Bri*_*ett 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
Run Code Online (Sandbox Code Playgroud)

在 W3C 方面,HTML 4.01 有一些关于如何编码表单参数的信息。遗憾的是,这不包括数组。

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

(作为旁注,W3C HTML JSON 表单提交草案规范涵盖了发布数组,谢天谢地。)


Jul*_*hke 3

URI 由 RFC 3986 定义。

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