web-dev-qa-db-ja.com

バイト範囲リクエストを有効にするにはどうすればよいですか?

バイト範囲リクエストを有効にするにはどうすればよいですか? iTunesでポッドキャストを実行すると、「フィードに問題があります。エピソードはバイト範囲リクエストをサポートしていないサーバーでホストされています。バイト範囲リクエストを有効にして、送信を再試行してください。」というエラーメッセージが表示されます。
バイト範囲リクエストを有効にする方法を教えてください

4
praji

Apacheは静的コンテンツのボックスのすぐにそれを処理します。コンテンツがPHPによって生成されている場合は、それに応じてPHPコードを修正する必要があります。

おそらく http_send_file ()および http_send_data ()関数は範囲リクエストを処理しますが、実際にはそれが何を意味するのかわかりません-いくつかの実験が必要です。

5
symcbean

ApacheはByte-Rangeリクエストをすぐにサポートします-このDoSバグを回避するために明示的に無効にされていない場合( http://httpd.Apache.org/security/CVE-2011-3192 ) 。

次のような簡単なもの(PHPの場合)でテストできます。

<?php
$range = '60-120';
$Host = "my.domain.name";
$socket = fsockopen($Host,80);
$packet = "GET /path/to/static/file.xml HTTP/1.1\r\nHost: $Host\r\nRange:bytes=$range\r\nAccept-Encoding: gzip\r\nConnection: close\r\n\r\n";
fwrite($socket,$packet);
echo fread($socket,2048);

上記を実行すると、次のような結果になります。

HTTP/1.1 206 Partial Content
Date: Tue, 10 Jul 2012 11:17:55 GMT
Server: Apache
Last-Modified: Tue, 10 Jul 2012 10:12:23 GMT
Accept-Ranges: bytes
Content-Length: 61
Content-Range: bytes 60-120/6433
Connection: close
Content-Type: text/xml

tp://www.iTunes.com/dtds/podcast-1.0.dtd" version="2.0">
<ch

上記が機能しない場合は、誰かがRangeヘッダーをオフにしている可能性があります-.htaccessファイルまたはグローバルApache構成のどちらで検索するかについての提案については、上記のURLを参照してください。

3
David Goodwin