在生产中,zxing / ngx-scanner在Safari中有效,但在Chrome中不可用

问题描述 投票:0回答:1

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

我已经使用了Stackblitz提供的样板代码zxing,此repo's文档以及其他地方,例如Angular 8 component.html中的<zxing-scanner></zxing-scanner>。即使是简单的<zxing-scanner></zxing-scanner>,也没有其他行为会产生此行为。

要复制重现行为的步骤:1.npm i @zxing/ngx-scanner2.在Angular 8项目中,在HTTPS生产环境(例如部署到Heroku)中,转到component.html中带有<zxing-scanner></zxing-scanner>的页面。3.不会要求任何权限来访问Chrome中的相机。4.因此,无法打开扫描仪,并且控制台将显示以上错误。5.转到Safari中的同一页面。浏览器要求获得访问相机的许可,扫描仪可以正常运行。

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

版本

  • OS:Mac 10.14.6
  • 浏览器:Chrome:78.0.3904.97
  • 版本:@ zxing / ngx-scanner 2.0.1
  • 角度8

其他上下文

  • 在localhost上,Chrome和Safari都可以正常运行。
  • Chrome安全设置未显示产品站点作为安全例外列出。
  • 访问其他人的zxing-scanner页面,例如在Chromebook上显示Stack闪电战,则表明扫描程序正在按预期方式请求许可,并且一切运行正常。在我的环境中重现相同的代码时,扫描仪不起作用,并出现上述错误。
  • 如果无法在Safari中正常运行,我认为问题出在我的环境上,因为所有迹象都指向该环境...但是它可以在Safari中运行。也许Safari的安全性允许这样做,但是即使按照this post禁用Chrome安全性,也会发生相同的错误。
  • 我还使用服务工作者(通过WorkboxPlugin)通过本地缓存进行脱机访问。我排除了扫描仪页面,但仍然无法使用。
angular google-chrome safari zxing
1个回答
0
投票

我有同样的情况。请检查标题...在我的.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没有。

© www.soinside.com 2019 - 2024. All rights reserved.