Вопрос

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

Это было полезно?

Решение

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

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

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

Две идеи:

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