将HTML5视频标签分配给webGL纹理时,JavaScript – CORS /跨域安全异常 - 代码日志

将HTML5视频标签分配给webGL纹理时,JavaScript – CORS /跨域安全异常

我想在WebGL中为远程视频分配纹理。由于视频源与文档源不同,我将Access-Control-Allow-Origin:*添加到视频源的http头。另外,我通过使用video.crossOrigin =”;为视频标签分配匿名来源。有趣的是,跨域属性适用于图像,但不适用于视频标签。一旦将WebGL纹理分配给视频对象,JavaScript会抛出以下异常:

未捕获错误:SECURITY_ERR:DOM异常18

这是一个jsfiddle重现这个问题。此示例基于three.js的webgl_kinect示例:
http://jsfiddle.net/ZgeTU/2/

以下是相关部分:

// CROSS-ORIGIN VIDEO SOURCE 
// REMOTE VIDEO SOURCE PROVIDES "Access-Control-Allow-Origin:*" HEADER
video.src =
  'http://kammerl.de/threejs/three.js/examples/textures/kinect.webm';
// DEFINING ANONYMOUS ORIGIN
video.crossOrigin = '';
video.play();

稍后,视频标签分配给Three.js纹理:

texture = new THREE.Texture( video );  

显然,在webGL中使用crossOrigin视频的这个问题已经知道了一段时间,但是我没有发现任何更新:
http://jbuckley.ca/2012/02/cross-origin-video/

有人知道这个问题的状态是什么?在webGL中访问远程视频有任何解决方法吗?任何帮助是极大的赞赏!

谢谢!

既然你在jquery,并且有些客户端处理是推荐的,也许你可以看看插件或cors插件的基础(2,3)。

假设你正在做正确的事情,并为每个浏览器添加标题(4,5),得到一个数据包分析器,如wireshark,并检查数据包,让你更有洞察力。

不过话虽如此,对于WebGL来说,CORS有很好的机会正在进行中。为了按规范执行,浏览器正在修改支持(1)。

祝你好运。

(1)资料来源:https://www.khronos.org/webgl/public-mailing-list/archives/1106/msg00042.html

(2)资料来源:archive.plugins.jquery.com/project/cors

(3)资料来源:saltybeagle.com/2009/09/cross-origin-resource-sharing-demo/

(4)资料来源:www.html5rocks.com/en/tutorials/cors/

(5)资料来源:github.com/saltybeagle/cors

另请注意:
www.jaanga.com/2012/04/access-cross-origin-images-from.html

http://stackoverflow.com/questions/14206244/cors-cross-domain-security-exception-when-assigning-html5-video-tag-to-webgl-tex

本站文章除注明转载外,均为本站原创或编译
转载请明显位置注明出处:将HTML5视频标签分配给webGL纹理时,JavaScript – CORS /跨域安全异常