multipart/form-data 的边界是什么?

新手上路,请多包涵

我想问一个关于 multipart/form-data 的问题。在 HTTP 标头中,我发现 Content-Type: multipart/form-data; boundary=???

用户可以自由定义 ??? 吗?或者它是从 HTML 生成的?我可以定义 ??? = abcdefg 吗?

原文由 Questions 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 427
1 个回答

用户可以自由定义 ??? 吗?

是的。

还是由 HTML 提供?

。HTML 与此 无关。参见下文。

我可以将 ??? 定义为 abcdefg 吗?

是的。

如果你想向网络服务器发送以下数据:

 name = John
age = 12

使用 application/x-www-form-urlencoded 会是这样的:

 name=John&age=12

如您所见,服务器知道参数由与号分隔 & 。如果参数值需要 & 则必须对其进行编码。

那么当服务器使用 multipart/form-data 接收到 HTTP 请求时,它如何知道参数值的开始和结束位置呢?

使用 _边界_,类似于 &

例如:

 --XXX
Content-Disposition: form-data; name="name"

John
--XXX
Content-Disposition: form-data; name="age"

12
--XXX--

在这种情况下,边界值为 XXX 。您在 Content-Type 标头中指定它,以便服务器知道 如何拆分 它接收到的数据。

所以你需要:

  • 使用不会出现在发送到服务器的 HTTP 数据中的值。

  • 保持一致并在请求消息中的所有位置使用相同的值。

原文由 Oscar Mederos 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题