web-dev-qa-db-ja.com

HTTP 206 Partial Contentステータスメッセージの意味と、リソースを完全にロードするにはどうすればよいですか?

このようなサイトにはいくつかの画像タグがあります。

<img src="img.png"/>

それらをロードしようとすると、半分しかロードされません。ネットワークコンソールで要求を確認すると、応答は次のようになっています。

206部分的なコンテンツ

私はそれをグーグルで調べましたが、ヘッダーに範囲が設定されている場合、これは次のようになります。しかし、これらのヘッダーは実際にはどこに設定されていますか?そして、どうすればこれを回避し、完全な画像をロードできますか?

31
prasadmsvs

ser166390の回答から 質問へ Firebugが動画読み込みリクエストで「206 Partial Content」応答を表示するのはなぜですか?

この部分コンテンツコード(206)mayは、クライアントが範囲を要求したときにサーバーから送信されます(たとえば、「最初の2MBのビデオデータを提供してください」)。

未使用のリソースをフェッチすることを避けるため、データをチャンクでダウンロードするために不可欠です。 (私がオンラインで完全なビデオを見ることはめったにありません。)Rangeヘッダーの発信リクエストを見てください。

36
csaron92

残りのデータ(または次のビット)を取得するために別の呼び出しを行うのはクライアント次第です。何もする必要はありません。彼らは最終的に完全な画像を取得します。たとえそれがいくつかのhttp呼び出しを必要としてもです。

5
Penfold

異なるサブドメインからフォントをロードするときに同様の問題がありました。私の場合、クロスドメインの問題により206が発生していましたが、ルートフォルダーに.htaccessファイルを置くだけで解決しました。

<IfModule mod_headers.c>
    Header set Access-Control-Allow-Origin "*"
</IfModule>
1
thiago marini

まず:

HTTP206 Partial Content成功ステータスの応答コードは、リクエストが成功し、Rangeリクエストのヘッダー。

範囲が1つしかない場合、応答全体のContent-Typeがドキュメントのタイプに設定され、Content-Rangeが提供されます。

複数の範囲が送り返される場合、Content-Typemultipart/byterangesに設定され、各フラグメントは1つの範囲をカバーし、Content-RangeおよびContent-Typeで記述されます。

Mozillaの優れたHTTPステータスコードリファレンスから。

次:

リソースに設定されるHTTPヘッダーは通常、Webサーバーによって設定されます。ただし、ビデオファイルのようにファイルが大きい場合は、 ブラウザは、読み込まれているリソースのチャンクをリクエストできます です。通常、HTTP 206ヘッダーは、クライアントが開始したリクエストから返されます。 Apacheのリソースに設定されるヘッダーは、mod_headershttpd.confセクションで設定されます。部分的なコンテンツがオンになっているかどうかを確認するには、次の行を探します。

Header set Accept-Ranges bytes

このセクションは、Apacheによって設定されるヘッダーの動作を制御するため、開始するのに適した場所になります。

ただし、ヘッダーの設定はさまざまな方法で実行できます。たとえば、Apacheを使用する場合、キャッシュされるようにロードされるイメージを制御できます。これは、[a2enmod module][2]を使用して実行できます。これにより、サーバーの負荷が軽減されます。

0
Aran Mulholland