【发布时间】:2015-02-24 22:25:15
【问题描述】:
我正在开发一个使用来自 soundcloud API 的数据的 WebGL 应用程序。
我正在尝试使用 ThreeJS 将轨道图稿和波形 PNG 加载到纹理中以放置到精灵上。
但我在 chrome 中遇到错误:
来自 [soundcloudapi] 的图像已被跨域资源共享策略阻止加载:请求的资源上不存在“Access-Control-Allow-Origin”标头。
所以我一直在阅读 CORS,从 Soundcloud 文档看来,JSON 数据 (Soundcloud CORS) 以某种方式支持 CORS,但我不确定这是否或如何扩展到请求 pngs与曲目相关联。
我还阅读了一些关于 Three.js 和 CORS 的内容,因此我添加了以下内容:
THREE.ImageUtils.crossOrigin = '';
我在任何地方调用“loadTexture()”之前都这样写了,但我仍然遇到同样的错误。
我在想一种解决方法是在 javascript 中请求 PNG,然后向 php 文件发出 AJAX 请求,同时抓取图像并将其临时存储在我的服务器上,但如果很多人最终都这样做,这并不是很有效使用我的应用程序(可能不合法或从 Soundcloud 的角度来看)。所以我想尽可能避免这种情况。
以前有人试过吗?有人有什么想法吗?
感谢您的宝贵时间。
【问题讨论】:
-
嗯,这很有趣 - 似乎 artifact_url 确实有 CORS 标头,因为在我将 crossOrigin 设置为“匿名”后,我现在可以在 three.js 中显示它们,但waveform_url 没有 CORS 标头。 Soundcloud 团队有可能添加它们吗?
标签: javascript three.js webgl cors soundcloud