内容类型为“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¶msXML=string
当用户在网页上填写普通的POST表单时,我会接受它,浏览器在提交请求时不会受到键=值对的任何特定顺序的约束。
但是,由于请求是由中间服务器传递的,HTTP协议是否会说明此顺序的任何内容? Apache,nginx,IIS等服务器是否重新排列参数?如果将这样的POST请求发送到服务器,可以期望后端服务器代码(比如PHP,Perl,Java)可以访问与发送的相同的HTTP请求主体吗?
答案 0 :(得分:5)
浏览器应该在tree order中发送application/x-www-form-urlencoded
个数据。规范并没有明确说明,但如果仔细观察,你可以将它弄清楚。请参阅x-www-form-urlencoded-encoding-algorithm和Constructing the form data set。解码部分还将输出称为“名称 - 值对的排序列表”。
所以是的,一个表现良好的代理应该保留表单条目的顺序。