3

内容类型为“application/x-www-form-urlencoded”的 HTTP POST 请求在正文中以 key=value 对的形式编码参数,并与 & 分隔符连接。来自http://www.opencalais.com/HTTPexamples的示例:

POST /enlighten/rest HTTP/1.1
Host: api.opencalais.com
Content-Type: application/x-www-form-urlencoded
Content-Length: length

licenseID=string&content=string&paramsXML=string

当用户在网页上填写普通的 POST 表单时,我接受它,浏览器在提交请求时不受键=值对的任何特定顺序的约束。

但是,当请求由中间服务器传递时,HTTP 协议是否说明了这个顺序?Apache,nginx,IIS等服务器是否重新排列参数?如果将这样的 POST 请求发送到服务器,是否可以期望后端服务器代码(例如 PHP、Perl、Java)可以访问与发送的相同的 HTTP 请求正文?

4

1 回答 1

5

浏览器应该按树形顺序发送application/x-www-form-urlencoded数据。规范并没有说得很清楚,但如果你仔细看,你可以梳理出来。请参阅x-www-form-urlencoded-encoding-algorithm构建表单数据集。解码部分还将输出称为“名称-值对的排序列表”。

所以是的,一个表现良好的代理应该保留表单条目的顺序。

于 2013-01-28T08:20:28.807 回答