マルチパート応答のブラウザーサポート
-
05-07-2019 - |
質問
multipart / mixedを使用してHTTPレスポンスを作成したいのですが、どのブラウザがそれをサポートしているかわかりません。そして、それが聞こえるのと同じくらい便利であれば、クライアントの観点から。 正直に言うと、そのコンテンツタイプは特に必要ありません。同じ応答で複数のファイルを送信したいだけです。別のコンテンツタイプがより使用されている可能性があります。
解決
自家製のサーバーと簡単な応答でテストしました。ブラウザーが100%OKを理解していないため、応答が整形式かどうかはわかりません。しかし、結果は次のとおりです。
- Firefox 67.0.1(64ビット):最後の部分のみをレンダリングし、他の部分は無視します。
- IE 11.503 :すべてのコンテンツを1つのファイル(境界を含む)に保存します。何もレンダリングされません。
- Chrome 2019年:すべてのコンテンツを1つのファイルに保存します。何もレンダリングされません。
- Safari 4 :すべてのコンテンツを1つのファイルに保存します。何もレンダリングされません。
- 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年前で、当時のブラウザを使用していました。
JPEG画像のストリームに対して動作するHTTPマルチパート応答がありました。たとえば、Axis IPカメラはFirefoxのモーションJPEGストリームに使用します。 Internet Explorerの場合、Axisにはプラグインの使用が必要です。
Firefoxのみのサポートが要件を満たしている場合、マルチパートレスポンスの各パートにcontent-lengthヘッダーを設定することをお勧めします。元のHTTPヘッダーとマルチパート応答で境界文字列を同一にすることが役立つ場合があります(HTTPヘッダーに「-」がありません)。
2つのアイデア:
- フォーマット:&quot; multipart&quot;と思う小文字である必要があり、Content-typeヘッダーの最後にセミコロンが必要だとは思わない(違いが生じるかどうかは疑わしいが、そうなる可能性がある)。
- 置換モードを試しましたか?
Content-type:multipart / x-mixed-replace
を使用するだけです。他のすべては同じままにしてください。
所属していません StackOverflow