浏览器支持多部分响应

我想创build一个HTTP响应,使用multipart / mixed,但我不确定哪些浏览器支持它; 从客户的angular度来看,如果听起来很方便的话。 说实话,我不需要专门的内容types。 我只是想在同一个响应中传输多个文件。 也许还有另外一种内容types被使用。

我已经testing过了,有一个自制的服务器和一个简单的响应。 不知道是否响应是正确的,因为没有浏览器100%确定。 但是这里是结果:

  • Firefox 3.5 :只渲染最后一部分,其他人被忽略。
  • IE 8 :将所有内容显示为文本/纯文本,包括边界。
  • Chrome 3 :将所有内容保存在单个文件中,不会显示任何内容。
  • Safari 4 :将所有内容保存在单个文件中,不会呈现任何内容。
  • 歌剧10.10 :奇怪的东西。 开始将第一部分渲染为纯文本/文本,然后清除所有内容。 加载进度条挂在31%。

这里是完整的回应,如果有人发现任何错误,请告诉我,我会再试一次:

 HTTP/1.1 200 OK Date: Tue, 01 Dec 2009 23:27:30 GMT Vary: Accept-Encoding,User-Agent Content-Length: 681 Content-Type: Multipart/mixed; boundary="sample_boundary"; Multipart not supported :( --sample_boundary Content-Type: text/css; charset=utf-8 Content-Location: http://localhost:2080/file.css body { background-color: yellow; } --sample_boundary Content-Type: application/x-javascript; charset=utf-8 Content-Location: http://localhost:2080/file.js alert("Hello from a javascript!!!"); --sample_boundary Content-Type: text/html; charset=utf-8 Content-Base: http://localhost:2080/ <html> <head> <link rel="stylesheet" href="http://localhost:2080/file.css"> </head> <body> Hello from a html <script type="text/javascript" src="http://localhost:2080/file.js"></script> </body> </html> --sample_boundary-- 

根据我的经验,多部分响应可以在Firefox中使用,但不能在Internet Explorer中使用。 这是2年前,使用当时的浏览器。

我有HTTP多部分响应工作的JPEG图像stream。 例如,Axis IP摄像机使用Firefox的运动JPEGstream。 对于Internet Explorer,Axis需要使用插件。

如果Firefox仅支持符合您的要求,那么我build议在多部分响应的每个部分中设置内容长度标题。 这可能有助于使原始HTTP头和多部分响应中的边界string相同(HTTP头中缺less“ – ”)。

两个想法:

  1. 格式:我认为“多部分”应该是小写,我不认为在内容types头的末尾会有分号(尽pipe可能会有所不同,但有可能)。
  2. 你试过replace模式? 只需使用: Content-type: multipart/x-mixed-replace – 其他所有内容应保持不变。