Soporte de navegador de respuestas multiparte

Me gustaría crear una respuesta HTTP, usando multipart / mixed, pero no estoy seguro de qué navegadores lo admiten; y si es tan conveniente como suena, desde el punto de vista del cliente. Para ser honesto, no necesito específicamente ese tipo de contenido. Solo quiero transmitir más de un archivo en la misma respuesta; tal vez haya otro tipo de contenido más usado.

Lo probé con un servidor casero y una respuesta simple. No estoy seguro si la respuesta está bien formada porque ningún navegador lo entiende 100% correcto. Pero aquí están los resultados:

  • Firefox 3.5 : procesa solo la última parte, otros son ignorados.
  • IE 8 : muestra todo el contenido como si fuera texto / plano, incluidos los límites.
  • Chrome 3 : guarda todo el contenido en un solo archivo, no se procesa nada.
  • Safari 4 : guarda todo el contenido en un solo archivo, no se procesa nada.
  • Opera 10.10 : Algo extraño. Comienza a renderizar la primera parte como texto simple / texto, y luego borra todo. La barra de progreso de carga se bloquea en un 31%.

Aquí está la respuesta completa, si alguien encuentra algún error, por favor dígame y lo intentaré de nuevo:

 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/      Hello from a html    --sample_boundary-- 

En mi experiencia, las respuestas multiparte funcionan en Firefox pero no en Internet Explorer. Esto fue hace 2 años, utilizando los navegadores de la época.

He tenido respuestas HTTP multipart trabajando para una secuencia de imágenes JPEG. Por ejemplo, las cámaras IP Axis usan para su flujo JPEG en movimiento para Firefox. Para Internet Explorer, Axis requiere el uso de un complemento.

Si el soporte solo de Firefox cumple con sus requisitos, entonces le recomiendo configurar el encabezado de longitud del contenido en cada parte de la respuesta de varias partes. Podría ayudar a que la cadena de límites sea idéntica en el encabezado HTTP original y en la respuesta de varias partes (el ‘-‘ no aparece en el encabezado HTTP).

Dos ideas:

  1. Formato: creo que “multiparte” debe estar en minúscula, y no creo que se espere un punto y coma al final del encabezado de tipo de contenido (aunque es dudoso que marque la diferencia, es posible que lo haga).
  2. ¿Has probado el modo reemplazar? Simplemente use: Content-type: multipart/x-mixed-replace – todo lo demás debe permanecer igual.