Chrome不允许HTTP托管的网站访问摄像头和麦克风

5
我正在使用react-webcam来为应用程序拍摄自拍照片。在本地主机上,react-webcam可以完美运行,但是在HTTP托管的Web服务器上,默认情况下Chrome会拒绝访问相机。是否有解决摄像头访问问题的方法或其他npm插件可以在此处发挥作用。
注意:支持HTTPS的网站允许访问相机和麦克风。在这里,我只能选择HTTP。
2个回答

9

如果您正在使用它作为开发环境,并想在手机上测试,则可以执行以下操作:

  • 转到: chrome://flags/#unsafely-treat-insecure-origin-as-secure
  • 启用"不安全源视为安全"
  • 添加要忽略此策略的地址
  • 重新启动Chrome浏览器

1
找到这个花了很长时间。默认情况下,localhost是https,但是如果您要在两台设备上测试socket.io或其他技术,则如果您不想设置ssl,则这是必需的。 - Luke Vanzweden
1
这个在iOS的Chrome应用上已经不再可用了。 - Khris Vandal

4
react-webcam使用getUserMedia API,其规范声明如下:specification

当在不安全的源[Mixed-Content]上时,用户代理被鼓励在其开发人员工具、错误日志等中警告关于navigator.mediaDevices.getUserMedia、navigator.getUserMedia和任何前缀变体的使用。它明确允许用户代理在不安全的源上完全删除这些API,只要他们一次性删除所有API(例如,他们不应该仅在不安全的源上留下前缀版本)。

从Chrome 47开始实施了此安全策略(来源):

从Chrome 47开始,只有来自安全源(HTTPS或本地主机)的getUserMedia()请求才被允许。

因此,没有安全连接,您无法访问麦克风或摄像头。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接