61

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

<img src="img.png"/>

それらをロードしようとすると、半分しかロードされません。ネットワーク コンソールでリクエストを確認すると、次のようなレスポンスが表示されます。

206 部分的なコンテンツ

ググってみると、ヘッダーに範囲設定があればこうなるらしい。しかし、これらのヘッダーは実際にはどこに設定されているのでしょうか? そして、これを回避して完全な画像をロードするにはどうすればよいですか?

4

4 に答える 4

5

まず:

HTTP206 Partial Content成功ステータス レスポンス コードは、リクエストが成功し、リクエストのRangeヘッダーに記述されているように、リクエストされた範囲のデータがボディに含まれていることを示します。

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

複数の範囲が送り返される場合、Content-Typeが に設定されmultipart/byteranges、各フラグメントが 1 つの範囲をカバーし、それContent-RangeContent-Type説明します。

( Mozilla の優れた HTTP ステータス コード リファレンスより。 )

次:

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

Header set Accept-Ranges bytes

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

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

于 2019-03-25T01:45:28.957 に答える
1

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

<IfModule mod_headers.c>
    Header set Access-Control-Allow-Origin "*"
</IfModule>
于 2014-10-04T08:48:53.907 に答える