HTTP POST参数的顺序发生了变化?

时间:2012-12-29 20:10:36

标签: http post webserver

内容类型为“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请求主体吗?

1 个答案:

答案 0 :(得分:5)

浏览器应该在tree order中发送application/x-www-form-urlencoded个数据。规范并没有明确说明,但如果仔细观察,你可以将它弄清楚。请参阅x-www-form-urlencoded-encoding-algorithmConstructing the form data set。解码部分还将输出称为“名称 - 值对的排序列表”。

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