为什么大多数文件上传时的边界符是 AaB03x 是什么规范吗
的确这个边界值可以自定义,但是很都时候都是AaB03x
,是有什么典故么?
POST /path/to/script.php HTTP/1.1
Host: example.com
Content-type: multipart/form-data, boundary=AaB03x
Content-Length: $requestlen
--AaB03x
content-disposition: form-data; name="field1"
$field1
--AaB03x
content-disposition: form-data; name="field2"
$field2
--AaB03x
content-disposition: form-data; name="userfile"; filename="$filename"
Content-Type: $mimetype
Content-Transfer-Encoding: binary
$binarydata
--AaB03x--
我们在sf
上传文件的时候
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
RFC 2046里的第五章"5. Composite Media Type Values"详细规范了用于声明边界的字符串 boundary delimiter 的语法,摘几个应当知道的规则:
如果不被
""
包裹,boundary delimiter 不允许出现:
Content-Type: multipart/mixed; boundary=gc0pJq0M:08jU534c0p
应当改为Content-Type: multipart/mixed; boundary="gc0pJq0M:08jU534c0p"
boundary delimiter 不应当出现在包裹内容中
boundary delimiter 不应当比70个字符更长(不包括起始的
--
)所以如@有明 所说,这个boundary delimiter应当随机生成,并不出应现在文件内容中。
说来好笑,这个东西为何在谷歌中能搜到一大把呢,因为它曾经出现在W3C HTML4规范的样例里……
W3C的样例应该加一句“技术动作请勿模仿”2333
这个应该是表达一种示例吧。按意义来说,边界分隔符要用来分界,所以最重要的性质是要与内容区分开来。也就是说,要避免使用在参数内容中出现的值来做边界分隔符。在浏览器中,一般都采用相对比较长的随机串来做分隔符。而像
AaB03x
这样长度又短,又唯一的分隔符是非常不推荐使用的。