在 webgl 上读取像素时出现 Dom 安全错误 18
当我尝试在 webgl 上进行选择时,我使用帧缓冲区并读取像素颜色来执行此操作。当函数 gl.readpixels 运行时,它会抛出 (SECURITY_ERR : Dom Exception 18) 。
http://imageshack.us/f/94/readpxielerror.jpg/
我不知道如何解决这个问题。
所以请帮助我!
When I’m trying to do picking on webgl, I use the framebuffer and read the pixel color to do this. And it throw the (SECURITY_ERR : Dom Exception 18) while the function gl.readpixels run.
http://imageshack.us/f/94/readpxielerror.jpg/
I don’t know how to solve this problem.
So help me please !!!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
将图像托管在提供页面的同一主机中,当您使用跨域资源进行渲染时,webgl 将画布标记为受污染。有同样的问题并且解决了它。
编辑:
稍微扩展一下,当前的 WebGL 实现将其作为一种机制,不允许恶意页面利用驱动程序来控制用户工作站。请记住,您为 readPixels 调用传递了一个数组,这可能会被用于缓冲区溢出攻击,从而使 WebGL 成为潜在的安全风险。
第二次编辑:
目前正在进行工作以支持 canvas 和 webgl 中更好的跨源图像,您可以检查它 此处
Host the image in the same host were your page is served, webgl marks the canvas as tainted when you use a cross-domain resource for rendering. Had the same problem and that solved it.
Edit:
To expand a little bit, current WebGL implementations do this as a mechanism to not allow malign pages to exploit drivers to take control over a user workstation. Remember that you pass an array for the readPixels call and this could be used for a buffer overflow attack rendering WebGL as a potential security risk.
2nd Edit:
There's currently work in progress to support even better cross-origin images in canvas and webgl, you can check it here