web-dev-qa-db-ja.com

マルチパート応答のブラウザーサポート

Multipart/mixedを使用してHTTP応答を作成したいのですが、どのブラウザーがそれをサポートしているかはわかりません。クライアントの観点から、それが思ったほど便利な場合。正直なところ、そのコンテンツタイプは特に必要ありません。同じ応答で複数のファイルを送信したいだけです。多分もっと使用される別のコンテンツタイプがあります。

34
Diego Jancic

私はそれを自家製のサーバーと簡単な応答でテストしました。 100%OKと解釈するブラウザーがないため、応答が整形式であるかどうかはわかりません。しかし、ここに結果があります:

  • Firefox 67.0.1(64ビット):最後の部分のみをレンダリングし、その他は無視されます。
  • IE 11.5:すべてのコンテンツを1つのファイル(境界を含む)に保存します。何もレンダリングされません。
  • Chrome May 2019:すべてのコンテンツを単一のファイルに保存し、何もレンダリングされません。
  • Safari 4:すべてのコンテンツを1つのファイルに保存します。何もレンダリングされません。
  • Opera 10.1:変なもの。最初の部分をプレーン/テキストとしてレンダリングを開始し、すべてをクリアします。ロードの進行状況バーが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--
30
Diego Jancic

私の経験では、マルチパート応答はFirefoxでは機能しますが、Internet Explorerでは機能しません。これは2年前、当時のブラウザを使用していた。

JPEG画像のストリームに対してHTTPマルチパート応答が機能しました。たとえば、Axis IPカメラは、FirefoxのモーションJPEGストリームに使用します。 Internet Explorerの場合、Axisではプラグインを使用する必要があります。

Firefoxのみのサポートが要件を満たしている場合は、マルチパートレスポンスの各パートにcontent-lengthヘッダーを設定することをお勧めします。元のHTTPヘッダーとマルチパート応答で境界文字列を同一にすることが役立つ場合があります(HTTPヘッダーに「-」がありません)。

4
Thomas Bratt

2つのアイデア:

  1. 書式設定:「マルチパート」は小文字である必要があると思います。また、Content-typeヘッダーの最後にセミコロンが必要であるとは思いません(違いが生じるかどうかは疑わしいですが、可能性があります)。
  2. 置き換えモードを試しましたか?ただ使用してください:Content-type: multipart/x-mixed-replace-他はすべて同じままである必要があります。
3
RickNZ