是否可以使用适当的Access-Control-Allow-Origin标头为跨域资源启用WebAudio处理?

时间:2018-08-18 08:06:29

标签: html5 web-audio

我正在构建一个包含两个服务器的音频应用程序。服务器A专用于音频流,而服务器B则管理一个HTML页面,该页面从A加载音频源。

可以正常播放音频。但是,当我尝试使用WebAudio API做一些魔术时,我收到一条消息,提示

  

“ MediaElementAudioSource由于进行CORS访问而输出零   {{audio src的URL}}的限制

这很公平,因为WebAudio spec

  

HTMLMediaElement允许播放跨域资源。   因为Web Audio允许检查资源的内容   (例如,使用MediaElementAudioSourceNode和ScriptProcessorNode   以读取样本),如果脚本来自   一个来源检查另一个来源的资源内容。

     

为防止这种情况,MediaElementAudioSourceNode必须输出静默   而不是HTMLMediaElement的正常输出(如果已   使用HTMLMediaElement创建,对其执行抓取   算法将该资源标记为CORS-cross-origin。

问题是我是否要进行这种“原产地”检查

我对两台服务器的输出都有完全的控制权,所以我提出了两个想法。

  1. 添加Access-Control-Allow-Origin标头。这是工作的原因 CORS XMLHttpRequest。但是,它不适用于WebAudio API。做 我还需要其他标头吗?
  2. 对域映射或标题进行一些技巧,以使浏览器认为A 和B在逻辑上是相同的域。到目前为止,我不知道是否 实际上是可行的。

我应该有更多选择吗?任何建议表示赞赏。

注意:

对服务器B代理不是我的选择,因为A的目的是从B卸载此类工作。

1 个答案:

答案 0 :(得分:1)

我自己找到了答案。

解决方案是将crossOrigin="anonymous"属性添加到相应的音频元素。