【问题标题】:Order of HTTP POST parameters changed?HTTP POST 参数的顺序改变了吗?
【发布时间】:2012-12-29 20:10:35
【问题描述】:

内容类型为“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 表单时,浏览器在提交请求时不会绑定到任何特定的 key=value 对顺序。

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

【问题讨论】:

  • 我看不出中间服务器这样做的理由。

标签: http post webserver


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-10
    • 2016-10-24
    • 2018-03-20
    相关资源
    最近更新 更多