我正在构建一个包含两个服务器的音频应用程序。服务器A专用于音频流,而服务器B则管理一个HTML页面,该页面从A加载音频源。
可以正常播放音频。但是,当我尝试使用WebAudio API做一些魔术时,我收到一条消息,提示
“ MediaElementAudioSource由于进行CORS访问而输出零 {{audio src的URL}}的限制
这很公平,因为WebAudio spec说
HTMLMediaElement允许播放跨域资源。 因为Web Audio允许检查资源的内容 (例如,使用MediaElementAudioSourceNode和ScriptProcessorNode 以读取样本),如果脚本来自 一个来源检查另一个来源的资源内容。
为防止这种情况,MediaElementAudioSourceNode必须输出静默 而不是HTMLMediaElement的正常输出(如果已 使用HTMLMediaElement创建,对其执行抓取 算法将该资源标记为CORS-cross-origin。
问题是我是否要进行这种“原产地”检查?
我对两台服务器的输出都有完全的控制权,所以我提出了两个想法。
Access-Control-Allow-Origin
标头。这是工作的原因
CORS XMLHttpRequest
。但是,它不适用于WebAudio API。做
我还需要其他标头吗?我应该有更多选择吗?任何建议表示赞赏。
注意:
对服务器B代理不是我的选择,因为A的目的是从B卸载此类工作。
答案 0 :(得分:1)
我自己找到了答案。
解决方案是将crossOrigin="anonymous"
属性添加到相应的音频元素。