【问题标题】:HTTP www-form-urlencoded; raw POST without key/value pairs?HTTP www-form-urlencoded;没有键/值对的原始 POST?
【发布时间】:2016-03-09 21:24:38
【问题描述】:

我有一个项目,我们通过 HTTP 发送包含特殊 ASCII 代码的文本有效负载。对这些特殊的 ASCII 代码使用 URLEncode 可以按预期工作。

问题是,我被告知要使用 x-www-form-urlencoded 内容类型,但要接受原始正文,就好像它不是表单(没有键/值对)并且只是 urldecode接收内容作为单个有效载荷。

问题:这合理吗?我以前没有遇到过这个问题,也没有检查过 x-www-form-urlencode 的实际使用情况与潜在的“规范破坏”使用情况(即“表单”部分无关紧要,可以忽略)。

TIA 用于交叉检查!

【问题讨论】:

  • 您能详细介绍一下您是如何发送这些数据的吗?您使用表单还是普通的 AJAX 请求?数据实际上是键/值格式吗?
  • 这是无头的(类似 REST 服务),数据不是键/值格式。我习惯于使用 www-form-urlencoded ,其中正文包含诸如 data=URLENCODEDDATAHERE file=BASE64 内容之类的内容,此处始终存在键=值对。

标签: http http-headers


【解决方案1】:

回答您的问题:不,这不合理。如果数据不是键/值格式,那么将x-www-form-urlencoded 用作Content-Type 没有多大意义(参见standard,这里是good explaination)。

还有什么用? 这真的取决于你的数据。来自标准(RFC2045):

内容类型头域

Content-Type 字段的目的是描述数据 完全包含在正文中,接收用户代理可以 选择合适的代理或机制将数据呈现给 用户,或以适当的方式处理数据。这 该字段中的值称为媒体类型。

所以如果你真的只有 ASCII 字符,它仍然是text/something 类型。如果原始数据对您的应用程序是特殊的,您可以激励

【讨论】:

  • 好答案,“好解释”中的参考非常好!
猜你喜欢
  • 2018-08-18
  • 2012-07-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-12-20
相关资源
最近更新 更多