有没有为什么多HTTP响应不普遍支持在浏览器中事实上的或已建立的原因吗?(Is there a de

2019-06-24 17:54发布

HTTP协议支持了很长一段时间多响应。 我以前用过他们有适当装备的消费者的API,但它不会出现浏览器的支持对他们来说是很不错的,也没有在过去的五年里提高。 我已经很难找到关于这可能是为什么很多信息。 我很想能够通过发送我所知道的web应用程序将需要对初始请求的资产,特别是对于那些喜欢使用Backbone.js的客户端框架应用程序以减少HTTP请求。

是否有任何的白色纸张,贸易文章,失败的实验,或者为什么没有浏览器的制造商或网络性能的传道者支付这个长期HTTP构建任何关注其他证据?

要彻底清楚,我不是在寻找一个意见,但真正的证据表明,这可能是为什么。 例如,如果Mozilla的几年前出版的一些关于这一点,或者出现在Firefox的bug跟踪系统,其中的主要开发者评论,为什么他们不会实现这个封闭的票。

Answer 1:

其实旧版本的IE会处理多应用/八位字节流的响应和下载操作过程中保存的所有文件,但是这个最近被移除(如IE7的,我认为),并具体到只下载。

我怀疑你会找到“证据”你要找的,因为我不认为你提出的是与HTTP规范的“精神”是一致的。 我会尽量解释一下我的意思了。 HTTP的基本模式是一种客户驱动的请求和服务器对该请求的响应。 但你似乎是提出该服务器将返回与该客户端将知道如何处理它们做的假设任意文件。

但是,如果你要提出的是,客户端首先明确要求多个文件,那么我会说,你可以将要发生什么。 HTTP 1.1规范确实允许接受客户请求头,表示多的支持,这似乎是在HTTP设计师如何设想这方面的工作。 不幸的是,规范是沉默的客户应该如何识别它希望接收的文件,如果你在一个真空看看HTTP,因为它的定义,而不是通过浏览器和网站的镜头,这是可以理解的。 这是留给了客户端和服务器解决一个实现细节。 它是适用于不同的层关注的问题 - 内容是什么,以及它是如何消费的,而不是如何请求它和运输它。

这是很容易想象的各种解决方案,当然,但没有一个标准的引用,它似乎并不保证上的浏览器开发商的部分努力。 我能想象有人像微软(拥有超过一个广泛采用的服务器和浏览器控制)实现这一点,但他们会发明一种规范,人们会抱怨。 显然,我们决定最好还是等待10年的W3C上进行一些同意...



Answer 2:

直接从W3组织本身(在http://www.w3.org/Protocols/rfc2616/rfc2616-sec3.html#sec3.7.2 ):

3.7.2多部分类型

MIME提供了许多“多”类型 - 一个或多个实体的封装的单个消息主体内。 所有的多部分类型共享一个共同的语法,如在RFC 2046的部分5.1.1中定义

[40],并且必须包括一个边界参数作为介质类型值的一部分。 消息体本身是一个协议元素,因此必须只使用CRLF来表示身体部分之间换行符。 不像在RFC 2046中,任何多部分消息的结尾必须是空的; HTTP应用程序不能发送尾声(即使原来多包含尾声)。 这些限制,以保持多部分MESSAGE-体,其中,所述消息体的“端部”是由多部分结束指示边界的自定界天然存在。

一般来说,HTTP把一个多部分消息体没有不同于任何其它媒体类型:严格作为有效载荷。 一个例外是“多部分/字节范围”类型(附录19.2)当它出现在一个206(部分内容)响应,这将通过一些HTTP缓存机制如在章节13.5.4和14.16中描述来解释。 在所有其他情况下,HTTP用户代理应该遵循相同或类似的行为作为MIME用户代理将在接收到多部分类型。 一个多MESSAGE-身体的各个身体部位中的MIME头字段没有超出这通过其MIME语义定义的任何意义HTTP。

通常,HTTP用户代理应该遵循相同或类似的行为作为MIME用户代理将在接收到多部分类型。 如果一个应用程序接收到一个无法识别的多亚型,该​​应用必须将其视为等同于“多部分/混合的”。

  Note: The "multipart/form-data" type has been specifically defined for carrying form data suitable for processing via the POST request method, as described in RFC 1867 [15]. 


文章来源: Is there a de facto or established reason why multipart HTTP responses aren't generally supported in browsers?