首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >iTunes范围请求;podcast被拒绝

iTunes范围请求;podcast被拒绝
EN

Stack Overflow用户
提问于 2012-08-15 22:36:59
回答 1查看 2.2K关注 0票数 2

我正在尝试向itunes添加一个podcast,它处理字节范围的请求。我可以通过对音频文件进行curl来确认这一点:

代码语言:javascript
复制
curl -H "Range: bytes=50-100" --head http://media.site.org/podcasts/upload/2012/08/15/audio-081512.mp3

HTTP/1.1 200 OK
Server: nginx/1.2.0
Date: Wed, 15 Aug 2012 22:28:40 GMT
Content-Type: audio/mpeg
Content-Length: 51
Connection: keep-alive
X-Powered-By: Express
Status: 206 Partial Content
Accept-Ranges: bytes
Content-Range: bytes 50-100/1441605
Access-Control-Allow-Origin: *

但是,当我试图在iTunes中输入提要页面的URL时,我会得到以下错误:

“你的提要有问题。你的节目是托管在一台不支持字节范围请求的服务器上的。启用字节范围请求,然后再试一次提交。”

音频文件托管在与提要文件不同的服务器上,并且由节点服务器提供.但是,我不明白为什么只要响应头是正确的,这就应该很重要。

我有来自同一服务器的其他播客,这些播客是在iTunes开始要求字节范围支持之前添加的,它们仍然工作正常(包括在任何平台上,包括iPhone,表明字节范围请求确实正常工作)。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-08-16 01:01:39

如果响应头的HTTP状态为200,那么即使服务器接受字节范围的请求,iTunes也会拒绝播客。我所要做的就是强制一个206 Partial Response头。在Node中,它看起来如下(CoffeeScript):

代码语言:javascript
复制
res.writeHead 206, headers

headers是包含字节范围请求的所有适当头的散列,如:

代码语言:javascript
复制
headers:
  "Accept-Ranges": "bytes"
  "Content-Range": "bytes #{start}-#{end}/#{length}

startend变量是通过解析Range请求头来获得的,而length是音频文件的实际大小。我还提交了"Cache-Control": "no-cache"作为一个很好的标准。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11978335

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档