今天遇到的问题是将之前的IE控件读卡 替换为webHID的形式
ActiveX 控件
只能用于Internet Explorer 浏览器中运行的插件。这种技术允许在网页中嵌入丰富的交互式内容和功能,如读卡器控制、文件传输等并且不能跨平台只能在windows下系统去使用
HID Human Interface Device
HID 设备 是一种设备类别,涵盖了用户接口设备,如键盘、鼠标、游戏控制器以及许多其他设备类型。HID 协议允许这些设备通过标准的 USB 接口与计算机进行通信
具有更广泛的跨平台支持,依赖操作系统的通用接口,不需要特定的浏览器或插件,更加安全和标准化,适合各种外围设备的交互。
并且支持windows ,macOS,liunx系统
自己用本地localhost去运行可以正常的跑出来 ,但是部署到服务器读卡就不可用了
先开始以为兼容的问题 后来发现并不是兼容问题所导致的
而是因为出自于浏览器的安全机制导致的
WebHID需要安全的上下文环境,必须通过 HTTPS 协议或者在本地主机 (localhost) 上访问。如果你在服务器上使用 HTTP 协议,navigator.hid 将不可用
所以必须要https的协议才可以,否则出自于浏览器的安全机制就不会将navigator.hid的方法暴露出去.导致这个方案使用不了 ,所以自己本地可以运行但是部署到服务器就出现问题了
如果没有https协议的解决方法
将访问的地址设置为安全源
将某些不安全的来源(即HTTP而非HTTPS)临时视为安全来源。这通常用于开发环境中,以便在没有配置HTTPS的情况下仍然能够使用需要安全上下文(如摄像头、地理位置、WebHID等)的功能
在地址栏中输入以下对应链接进行设置,将地址设置为安全的
ie浏览器设置
edge://flags/#unsafely-treat-insecure-origin-as-secure
Google浏览器设置
chrome://flags/#unsafely-treat-insecure-origin-as-secure
Opera浏览器设置
opera://flags/#unsafely-treat-insecure-origin-as-secure
兼容的网站
https://developer.mozilla.org/zh-CN/docs/Web/API/Navigator/hid