Поддержка многопользовательских ответов браузером

Я хотел бы создать ответ HTTP, используя multipart/mixed, но я не уверен, какие браузеры поддерживают его; и если это так удобно, как кажется, с клиентской точки зрения. Честно говоря, мне не нужен конкретный тип контента. Я просто хочу передать несколько файлов в одном ответе; возможно, там используется еще один тип контента.

Ответ 1

Я проверил это, с самодельным сервером и простым ответом. Не уверен, что ответ правильно сформирован, потому что ни один браузер не понимает его на 100%. Но вот результаты:

  • Firefox 67.0.1 (64-разрядная версия): отображает только последнюю часть, другие игнорируются.
  • IE 11.503: сохраняет все содержимое в одном файле (включая границы), ничего не отображается.
  • Chrome Май 2019: сохраняет все содержимое в одном файле, ничего не отображается.
  • 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--

Ответ 2

По моему опыту, многопользовательские ответы работают в Firefox, но не в Internet Explorer. Это было 2 года назад, используя браузеры того времени.

У меня были HTTP-ответы, связанные с потоком JPEG-изображений. Например, IP-камеры Axis используют для потока движения JPEG для Firefox. Для Internet Explorer, Axis требует использования плагина.

Если поддержка только Firefox соответствует вашим требованиям, я рекомендую установить заголовок длины содержимого в каждой части многочастного ответа. Это может помочь сделать границу строки идентичной в исходном HTTP-заголовке и многочастном ответе (в заголовке HTTP отсутствует символ "-" ).

Ответ 3

Две идеи:

  • Форматирование: я думаю, что "multipart" должен быть в нижнем регистре, и я не думаю, что в конце заголовка Content-type ожидается точка с запятой (хотя сомнительно, что это будет иметь значение, возможно, что это может).
  • Вы пытались заменить режим? Просто используйте: Content-type: multipart/x-mixed-replace - все остальное должно оставаться неизменным.