使用反向代理请求.m3u8文件时添加CORS头

时间:2014-02-16 09:35:36

标签: http-headers reverse-proxy chromecast

我正在构建一个Chromecast应用,我想从流媒体提供商处传输.m3u8文件(HLS)。流媒体提供商不会向HTTP标头添加CORS标头,这是构建Chromecast应用程序的必要条件。

有没有办法通过代理路由请求,并让代理为.m3u8文件添加必要的标头? AFAICS,.m3u8文件进一步指向不同bandwith流的文件,因此有必要让代理为这些文件的头部添加适当的CORS头。

Here is an example of a link to a .m3u8 file我希望能够流式传输。

5 个答案:

答案 0 :(得分:1)

嘿,我意识到我有点迟了但我想我会发布在这里以防其他人发现它有用。在开发chromecast应用程序时遇到了同样的问题。我找到的简单解决方案是包含TOMODOkorz库,它将通过它的代理传递所有http请求。

您可以托管自己的代理并将库更改为相对容易指向您的代理。

答案 1 :(得分:1)

实际上,这可以通过重写Chromecast Media Player Library中的网址,并让这些子播放列表也通过http://www.corsproxy.com/等CORS代理进行代理。

要在自定义接收器中执行此操作,请导入google托管的库 <击> <script type="text/javascript" src="//www.gstatic.com/cast/sdk/libs/mediaplayer/0.5.0/media_player.js"></script>

相反,将混淆的javascript直接复制到您的接收器html页面中,并执行以下操作:

  • 使用g.D.url=k
  • 查找+替换g.D.url='http://www.corsproxy.com/' + k.replace(/^(?:[a-z]+:)?\/\//i,'')
  • 使用url:k
  • 查找+替换url:('http://www.corsproxy.com/' + k.replace(/^(?:[a-z]+:)?\/\//i,''))

现在,如果您使用http://www.corsproxy.com/YOUR_M3U8_FILE_HERE向Chromecast发送初始 contentId ,那么您应该拥有一个功能齐全的HLS播放Chromecast应用。

答案 2 :(得分:0)

大多数提供商都能够为其客户设置CORS。 Akamai当然可以。

答案 3 :(得分:0)

我已经能够通过向存储桶的权限添加一个允许的CORS文件,将HLS从S3存储桶流式传输到ChromeCast。

答案 4 :(得分:0)

回答我自己的问题: 如果没有重播广播流,这是不可能的。 .m3u8文件是包含指向其他文件的链接的文件,最后还包含二进制文件。所有这些,包括包含二进制文件的HTTP响应,都需要Chromecast的CORS标头才能显示内容。

如果您只想将CORS标题添加到文本响应中corsproxy.com是一个很好的替代方案,那么有很多可用的开源项目。