Я хотел бы создать ответ 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
- все остальное должно оставаться неизменным.