Chrome 不允许 HTTP 托管站点访问相机和麦克风

IT技术 javascript reactjs google-chrome browser webcam
2021-05-23 18:57:55

我正在使用react-webcam为应用程序捕获自拍照。在本地主机上,react-webcam 可以完美运行,而在 HTTP 托管的网络服务器上,Chrome 默认拒绝访问摄像头。是否有网络摄像头访问或任何其他 npm 插件的解决方法可以在这里达到目的。

注意:HTTPS 支持的站点可以访问摄像头和麦克风。在这里,我只剩下 HTTP 选择了。

2个回答

react-webcam 使用规范规定getUserMediaAPI

当在不安全的来源 [混合内容] 上时,鼓励用户代理警告使用 navigator.mediaDevices.getUserMedia、navigator.getUserMedia 及其开发人员工具、错误日志等中的任何前缀变体。 用户明确允许代理在不安全的来源上完全删除这些 API,只要他们一次删除所有API(例如,他们不应该只保留不安全来源上可用的前缀版本)。

Chrome,从版本 47 开始实现了这个安全策略(来源):

从 Chrome 47 开始,只允许来自安全来源的 getUserMedia() 请求:HTTPS 或 localhost。

因此,如果没有安全连接,您将无法访问麦克风或相机。

如果您将其用于开发环境并希望在您的手机上进行测试,您可以执行以下操作:

  • 转到:chrome://flags/#unsafely-treat-insecure-origin-as-secure
  • 启用“被视为安全的不安全来源”
  • 添加要忽略此策略的地址
  • 重启铬