我如何启用字节范围请求?在 iTunes 上进行播客时,它会显示一条错误消息“您的提要存在问题。您的剧集托管在不支持字节范围请求的服务器上。启用字节范围请求并重试提交。”。
请给我一个启用字节范围请求的方法
答案1
Apache 可以立即处理静态内容。如果内容是由 PHP 生成的,则需要相应地修改 PHP 代码。
据称http_send_file() 和http_send_data() 函数处理范围请求 - 但我不确定这在实践中意味着什么 - 需要进行一些实验。
答案2
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 标头 - 请参阅上述 URL 以获取有关在 .htaccess 文件或全局 Apache 配置中查找内容的建议。