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

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

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

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


30秒到达战场
浏览 600回答 3
3回答

慕容3067478

这个问题的确切答案是:是的,可以将任意值用于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--
打开App,查看更多内容
随时随地看视频慕课网APP