【问题标题】:Adding CORS headers when requesting .m3u8 files using reverse proxy使用反向代理请求 .m3u8 文件时添加 CORS 标头
【发布时间】:2015-05-08 00:41:13
【问题描述】:

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

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

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

【问题讨论】:

    标签: http-headers reverse-proxy chromecast


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

      这实际上可以通过重写 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 将初始 contentId 发送到 Chromecast,您应该拥有一个功能齐全的 HLS 播放 Chromecast 应用。

      【讨论】:

      • 太棒了,谢谢!这解决了我获得大部分想要运行的 HLS 流的问题。但是,某些流需要 HTTPS。有什么解决这个问题的建议吗?
      • 您实际测试过这个解决方案吗?从我的调查来看,实际的二进制文件似乎也需要添加 CORS 标头,而 corsproxy.com 似乎没有将这些标头添加到 .m3u8 引用的文件中。
      【解决方案3】:

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

      【讨论】:

        【解决方案4】:

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

        【讨论】:

          【解决方案5】:

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

          如果您只是想将 CORS 标头添加到文本回复中,corsproxy.com 是一个不错的选择,有几个可用的开源项目。

          【讨论】:

          • corsproxy.com 非常好,但它不再工作了。是否有具有相同功能的替代服务器?
          猜你喜欢
          • 2015-06-22
          • 2020-02-21
          • 1970-01-01
          • 1970-01-01
          • 2016-09-28
          • 1970-01-01
          • 2019-05-14
          • 2018-03-29
          • 2015-03-22
          相关资源
          最近更新 更多