gpt4 book ai didi

HTML 多部分表单 - "boundary"字符串的最大长度?

转载 作者:太空狗 更新时间:2023-10-29 15:02:14 24 4
gpt4 key购买 nike

在多部分(即 Content-Type=multipart/form-data)形式中,HTTP 服务器应该接受的边界字符串的长度是否有上限?

据我所知,相关的 RFC 说 70 个字符:

  • RFC2616 (HTTP/1.1) 部分“3.7 媒体类型”表示 Content-Type header 中允许的类型由 RFC1590(媒体类型注册程序)定义.
  • RFC1590 更新 RFC-1521(MIME)。
  • RFC1521 规定边界“不得超过 70 个字符,不包括两个前导连字符”。
  • 同样的文本也出现在 RFC2046 中,据称它已废弃 RFC1521

那么我可以确定目前所有主要的 HTTP/1.1 浏览器都遵守这个限制吗?是否有任何已知的浏览器(或其他 HTTP 客户端/库)可以打破此限制?

是否有其他一些我遗漏的规范或通用经验法则表明字符串将 70 个字符?在 Chrome(ium) 中,我得到类似这样的内容:----WebKitFormBoundaryLu4dNSGEhJZUgoe5,这显然少于 70 个字符。

我问这个问题是因为我的服务器运行在一个内存极其受限的环境中,所以“分配一个足够大的缓冲区来容纳整个 header 字符串”并不是一个理想的答案。

最佳答案

如您所见,RFC 2046更新了 MIME 规范,但将最大边界字符串的限制保留为 70 个字符,不包括两个前导连字符。

我认为所有主要浏览器(以及所有使用 MIME 的客户端,如邮件程序)都遵循该规范是一个合理的假设,否则传递多部分数据确实会非常危险。

可以肯定的是,我已经使用最新版本为您进行了实验验证:

  • curl :----------------------------5a56a6c893f2 (40)
  • Chrome 30(WebKit):----WebKitFormBoundarym0vCJKBpUYdCIWQG (38)
  • Safari 6(WebKit,与 Chrome 相同):----WebKitFormBoundaryFHUXvJBZwO2JKkNa (38)
  • FireFox 24:------------------------7096603861379320641089344535 (55)
  • IE 10:----------------------------7dd1961640278 (40) - 与 curl 相同的技术!
  • Apache HttpClient:----------------------------1294919323195 (42)

因此,不仅每个主要浏览器/客户端都符合要求,而且所有浏览器/客户端都允许您从理论最大值中为每个缓冲区的每个边界节省 15 个分配的字节。如果您可以轻而易举地打开用户代理,则可以挤出更多的性能。 ;-)

关于HTML 多部分表单 - "boundary"字符串的最大长度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8250154/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com