このようなサイトに画像タグがいくつかあります。
<img src="img.png"/>
それらをロードしようとすると、半分しかロードされません。ネットワーク コンソールでリクエストを確認すると、次のようなレスポンスが表示されます。
206 部分的なコンテンツ
ググってみると、ヘッダーに範囲設定があればこうなるらしい。しかし、これらのヘッダーは実際にはどこに設定されているのでしょうか? そして、これを回避して完全な画像をロードするにはどうすればよいですか?
このようなサイトに画像タグがいくつかあります。
<img src="img.png"/>
それらをロードしようとすると、半分しかロードされません。ネットワーク コンソールでリクエストを確認すると、次のようなレスポンスが表示されます。
206 部分的なコンテンツ
ググってみると、ヘッダーに範囲設定があればこうなるらしい。しかし、これらのヘッダーは実際にはどこに設定されているのでしょうか? そして、これを回避して完全な画像をロードするにはどうすればよいですか?
まず:
HTTP206 Partial Content
成功ステータス レスポンス コードは、リクエストが成功し、リクエストのRange
ヘッダーに記述されているように、リクエストされた範囲のデータがボディに含まれていることを示します。
範囲が 1 つしかない場合はContent-Type
、応答全体の がドキュメントのタイプに設定され、 aContent-Range
が提供されます。
複数の範囲が送り返される場合、Content-Type
が に設定されmultipart/byteranges
、各フラグメントが 1 つの範囲をカバーし、それContent-Range
をContent-Type
説明します。
( Mozilla の優れた HTTP ステータス コード リファレンスより。 )
次:
リソースに設定される HTTP ヘッダーは、通常、Web サーバーによって設定されます。ただし、ビデオ ファイルのようにファイルが大きい場合、ブラウザーは、読み込まれているリソースのチャンクを要求できます。通常、HTTP 206
ヘッダーはクライアントが開始したリクエストから返されます。Apache のリソースに設定されたヘッダーmod_headers
は、httpd.conf
. 次の行を探して、部分的なコンテンツがオンになっているかどうかを確認します。
Header set Accept-Ranges bytes
このセクションは、apache によって設定されたヘッダーの動作を制御するため、開始するのに適した場所になります。
ただし、ヘッダーの設定はさまざまな方法で行うことができます。たとえば、apache を使用する場合、読み込まれる画像を制御してキャッシュすることができます。これは、 を使用して実行できます[a2enmod module][2]
。これにより、サーバーの負荷が軽減されます。
異なるサブドメインからフォントをロードするときに、同様の問題が発生しました。私の場合、クロスドメインの問題が原因で 206 を取得していましたが、ルート フォルダーに .htaccess ファイルを配置するだけで解決しました。
<IfModule mod_headers.c>
Header set Access-Control-Allow-Origin "*"
</IfModule>