【发布时间】:2011-11-23 22:49:38
【问题描述】:
在多部分(即Content-Type=multipart/form-data)形式中,HTTP服务器应该接受的边界字符串的长度是否有上限?
据我所知,相关的 RFC 说 70 个字符:
- RFC2616 (HTTP/1.1) 部分“3.7 媒体类型”表示 Content-Type 标头中允许的类型由 RFC1590(媒体类型注册程序)定义。李>
- RFC1590 更新 RFC-1521(MIME)。
- RFC1521 规定边界“不得超过 70 个字符,不包括两个前导连字符”。
- 同样的文本也出现在 RFC2046 中,它被认为已经过时了 RFC1521。
那么我可以确定目前所有主要的 HTTP/1.1 浏览器都遵守这个限制吗?是否有任何已知的浏览器(或其他 HTTP 客户端/库)可以打破此限制?
我是否遗漏了其他一些规范或常见的经验法则,表明该字符串将 短 超过 70 个字符?在 Chrome(ium) 中,我得到类似这样的信息:----WebKitFormBoundaryLu4dNSGEhJZUgoe5,这显然比 70 个字符短。
我问这个问题是因为我的服务器在内存极度受限的环境中运行,因此“malloc 一个足够大的缓冲区以容纳整个标头字符串”并不是一个理想的答案。
【问题讨论】:
-
你要求一个上限。当然有可能你没有得到完整的上限而是更少(与 Chrome 边界有关)。
-
如果你使用AJAX直接处理你的PHP文件中的数据应该没有问题
-
“保存整个标题字符串”?如果只需要边界,为什么要使用整个标题?
-
为什么不分配实际输入所需的内存?使用 70 字节的上限并拒绝较大的边界为格式错误。
-
@RobertSiemer - 作为硬件成本下降的一个具体例子,这个问题最初是在 Raspberry Pi Rev A 以 35 美元的价格上市时提出的,你不能构建一个低数量的(几千?)Linux 板很多 比那便宜。 Pi 项目只是因为量大而成功。今天,Pi Zero 可以将我们需要的所有功能提高 10 倍,价格为 5 美元。超低功耗(微安待机电流)应用或超大容量的东西将是我今天做这样一个项目的唯一原因,无论如何都是专业的。
标签: html http mime-types