【问题标题】:XMLHttpRequest to get a sound from a different domainXMLHttpRequest 从不同的域中获取声音
【发布时间】:2014-07-11 14:42:18
【问题描述】:

我目前正在使用 Web Audio API,并且正在研究缓冲和播放来自不同域的声音源。

我做了很多或研究,包括在 stackoverflow 上,似乎有解决方案可以执行跨域请求(JSONP、YQL...)来查询 html、json、xml...但没有捕获音频源。获取声源的标准方法是使用 XMLHttpRequest 并强制响应为 arrayBuffer 类型:

var request = new XMLHttpRequest();
request.responseType = 'arraybuffer';
request.open("GET", url);

request.response 之后可以是一个可以播放的缓冲区。

这似乎适用于指向同一域的音频文件的“url”。有没有办法获得 XMLHttpRequest 从外部域请求音频源的响应?

我使用选择查询尝试了 http://query.yahooapis.com/v1/public/yql?,但无法从表中获取音频源(根据 https://developer.yahoo.com/yql/console/)。

欢迎提出任何想法。

非常感谢!!

【问题讨论】:

  • 只有两种方法:1)托管音频的服务器(在不同的域上)在其响应中发送适当的访问控制标头(听起来好像不是)和 2)设置您控制的服务器(在同一域上)来代理请求。

标签: ajax xmlhttprequest cross-domain web-audio-api arraybuffer


【解决方案1】:

这只有在您请求的音频文件位于支持 CORS 的服务器上时才有效(并且您在请求中使用了 CORS) - 您不能随意从其他服务器上抓取声音文件(因为那样会启用交叉-原始数据访问)。 http://enable-cors.org/.

【讨论】:

  • 非常感谢您的回答。我已经尝试过 CORS,但我请求音频文件的服务器不支持它。
  • 您可以使用 CORS 代理。这不是生产代码的最佳解决方案,但如果您只是想测试一些东西,它可以工作。例如。 corsproxy.com
  • corsproxy.com 上方的链接重定向到钓鱼网站。
猜你喜欢
  • 1970-01-01
  • 2011-02-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多