在生产环境中,zxing/ngx-scanner 在 Safari 中有效但在 Chrome 中无效

In production, zxing/ngx-scanner works in Safari but not in Chrome

错误 尽管使用 HTTPS,Chrome 仍无法打开 zxing/ngx-scanner 并在尝试打开时收到此错误:@zxing/ngx-scanner Error when asking for permission. DOMException: Permission denied. 但是,它在 Safari 中完美运行。 Safari 询问是否可以访问相机,并在授予它权限后一切正常。

我使用了来自 Stackblitz 的样板 zxing 代码、此 repo's 文档和其他地方,例如<zxing-scanner></zxing-scanner> 在 Angular 8 component.html 中。即使是普通的 <zxing-scanner></zxing-scanner> 也不会产生这种行为。

重现 重现该行为的步骤: 1. npm i @zxing/ngx-scanner 2. 在 Angular 8 项目中,在 HTTPS 生产环境(例如部署到 Heroku)中,转到 component.html 中带有 <zxing-scanner></zxing-scanner> 的页面。 3. Chrome 中的摄像头无需权限即可访问。 4、因此扫描器打不开,控制台会显示如上错误。 5. 转到 Safari 中的同一页面。浏览器请求访问相机的权限,扫描仪完美运行。

预期行为 扫描器适用于所有浏览器,包括 Chrome,在生产中。

版本

附加上下文

我也遇到过同样的情况。请检查您的 headers... 在我的 .htaccess 文件中,我有这样的内容:

Header set Feature-Policy "geolocation 'none'; midi 'none'; camera 'none'; usb 'none'; magnetometer 'none'; accelerometer 'none'; vr 'none'; speaker 'none'; ambient-light-sensor 'none'; gyroscope 'none'; microphone 'none'"

如你所见:

camera 'none';

Firefox 忽略了它,chrome 没有。