
最近项目需求有扫码功能,我是用的是 vue2 组件 vue-qrcode-reader ,部署地址不是 https 的话无法调取系统摄像头进行扫码。
想知道这个的原理是什么,以及有办法可以绕过这个限制或有其他不需要 https 也可以调用摄像头的组件吗?麻烦大佬们赐教,谢谢。
1 Oktfolio 2022 年 3 月 15 日 Chrome 的限制呗 |
2 P090mkVm22352Q8t 2022 年 3 月 15 日 之前也做过这个摄像头功能,好像通过 nginx 配置 443 能给你前端地址强制转为 https |
3 yin1999 2022 年 3 月 15 日 仅 https 可以调用,不过 localhost 用 http 应该也能调用( debug 用)。MDN Ref: https://developer.mozilla.org/en-US/docs/Web/API/MediaDevices/getUserMedia |
4 musi 2022 年 3 月 15 日 浏览器限制,如果想绕过那只能自己开发 app 了,然后在 app 里写好调用摄像头的 api 再开给 js 访问 |
5 libook 部属个 Nginx 用 Let's Encrypt 发个证书。 强制 HTTPS 主要是安全方面考虑,因为 HTTP 可能被中间人注入代码来开启摄像头。 |
6 otakustay 2022 年 3 月 15 日 基本上近几年新的 API 都是仅 HTTPS 可用的 |
7 leisure 2022 年 3 月 15 日 找个厂商申请个免费证书就好了,安全限制 |
8 geekvcn 2022 年 3 月 15 日 via Android 确实是这样的,不然 http 随便一劫持,摄像头不是随便看 |
9 iqoo 2022 年 3 月 15 日 这年头不是 https 的网站都懒得打开 |
10 Chism 2022 年 3 月 15 日 via Android 还有一种方法是 input 文件,限定为 image ,并且只能调用相机,这样貌似就可以不用 https ,前端读取 input 的文件也可以直接二维码识别 |
11 AV1 2022 年 3 月 15 日 摄像头、屏幕分享、传感器这些对隐私安全要求相对高,只能在 HTTPS 下使用。 |
12 murmur 2022 年 3 月 15 日 chrome 连 geolocation 都要 https ,就这玩意给我们坑的不轻,cordova 的应用都是本地文件哪里来的 https ,搞得有一段时间安卓某些个版本就没法定位 |