为了账号安全,请及时绑定邮箱和手机立即绑定

多部分/表单数据的边界是什么?

多部分/表单数据的边界是什么?

30秒到达战场 2019-07-08 16:01:43
多部分/表单数据的边界是什么?我想问一个关于multipart/form-data..在HTTP头中,我发现Content-Type: multipart/form-data; boundary=???.是???用户可以自由定义吗?或者它是从HTML生成的?我是否可以定义??? = abcdefg?
查看完整描述

3 回答

?
慕容3067478

TA贡献1773条经验 获得超3个赞

这个问题的确切答案是:是的,可以将任意值用于boundary参数,如果它的长度不超过70个字节,并且只包含7位US-ASCII(可打印的)字符。

如果您使用的是multipart/*内容类型,您实际上是所需若要指定boundary参数中的Content-Type否则,服务器(在HTTP请求的情况下)将无法解析有效负载。

您可能还希望将charset参数UTF-8在你的Content-Type标头,除非你可以绝对一点儿没错当然只有US-ASCII字符集将在有效载荷数据中使用。

一些相关的摘录RFC 2046:

  • 4.1.2.字符集参数:

    与其他一些参数值不同,字符集参数的值不区分大小写。默认字符集(在没有字符集参数时必须假定)是US-ASCII。

  • 5.1.多部分媒体类型

    正如内容传输编码字段[rfc 2045]的定义所述,除了“7位”、“8位”或“二进制”类型的实体之外,不允许对“多部分”实体进行任何编码。在任何情况下,“多部分”边界分隔符和标头字段总是表示为7位US-ASCII(尽管标头字段可以按照RFC 2047编码非US-ASCII标题文本),而且主体部分中的数据可以部分编码,并为每个适当的主体部分编码内容传输-编码字段。

    多部分实体的ContentType字段需要一个参数“边界”。然后,边界分隔符行被定义为一行,完全由两个连字符(“-”,十进制值45)组成,后面是内容类型标头字段中的边界参数值、可选的线性空格和终止的CRLF。

    边界分隔符不能出现在封装的材料中,并且不能超过70个字符,不包括两个前导连字符。

    最后一个主体部分后面的边界分隔符线是一个可分辨的分隔符,它指示不会有更多的主体部分跟随。这样的分隔符行与前面的分隔符行相同,在边界参数值之后再添加两个连字符。

下面是一个使用任意边界的示例:

Content-Type: multipart/form-data; charset=utf-8; boundary="another cool boundary"--another cool boundaryContent-Disposition:
 form-data; name="foo"bar--another cool boundaryContent-Disposition: form-data; name="baz"quux--another cool boundary--


查看完整回答
反对 回复 2019-07-08
  • 3 回答
  • 0 关注
  • 599 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信