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

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

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

小唯快跑啊 2019-08-09 11:05:32
multipart / form-data的边界是什么?我想问一个关于这个的问题multipart/form-data。在HTTP标头中,我发现了Content-Type: multipart/form-data; boundary=???。是???免费的用户定义?或者它是从HTML生成的?我可以定义??? = abcdefg吗?
查看完整描述

3 回答

?
蛊毒传说

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

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

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

您可能还希望在头中设置charset参数,除非您可以绝对确定在有效内容数据中仅使用字符集。UTF-8Content-TypeUS-ASCII

RFC2046的一些相关摘录:

  • 4.1.2。字符集参数:

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

  • 5.1。多部分媒体类型

    如Content-Transfer-Encoding字段[RFC 2045]的定义中所述,对于“multipart”类型的实体,不允许除“7bit”,“8bit”或“binary”之外的编码。在任何情况下,“多部分”边界分隔符和标题字段始终表示为7位US-ASCII(尽管标题字段可以根据RFC 2047编码非US-ASCII标题文本),并且正文部分中的数据可以编码在逐个部分,每个适当的身体部位使用Content-Transfer-Encoding字段。

    多部分实体的Content-Type字段需要一个参数“boundary”。然后将边界定界符行定义为一个完全由两个连字符(“ - ”,十进制值45)组成的行,后跟来自Content-Type头字段的边界参数值,可选的线性空格和终止的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-08-09
  • 3 回答
  • 0 关注
  • 1640 浏览
慕课专栏
更多

添加回答

举报

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