【发布时间】:2020-03-09 19:00:10
【问题描述】:
错误
尽管使用了 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,在生产中。
版本
- 操作系统:Mac 10.14.6
- 浏览器:Chrome:78.0.3904.97
- 版本:@zxing/ngx-scanner 2.0.1
- 角度 8
附加上下文
- 在 localhost 上,Chrome 和 Safari 上一切正常。
- Chrome 安全设置不显示列为安全例外的 prod 网站。
- 访问其他人的zxing-scanner页面,例如在 Stack blitz 上,而在 Chrome 中显示扫描仪正在按预期请求权限,并且一切正常。在我的环境中复制相同的代码时,扫描仪无法工作并出现上述错误。
- 如果它在 Safari 中不起作用,我认为问题出在我的环境中,因为所有迹象都表明...但它在 Safari 中起作用。也许 Safari 的安全性允许这样做,但即使按照 this post 禁用 Chrome 安全性,也会发生同样的错误。
- 我还使用服务工作者(通过 WorkboxPlugin)通过本地缓存进行离线访问。我排除了扫描仪页面,它仍然无法正常工作。
【问题讨论】:
标签: angular google-chrome safari zxing