从受 SSL 保护的 HTTPS React JS Web 应用程序连接本地连接的打印机
Posted
技术标签:
【中文标题】从受 SSL 保护的 HTTPS React JS Web 应用程序连接本地连接的打印机【英文标题】:Connect Locally Connected Printer from a SSL protected HTTPS React JS Web App 【发布时间】:2020-12-23 01:21:04 【问题描述】:我正在开发一个在 MERN 堆栈中制作的 Web 应用程序,并在我们使用 Epson TM-M30 打印机时集成了 Epson javascript SDK 来打印收据。 Web 应用程序可能主要在 Safari 上运行,但有时也可以在 chrome 或 firefox 上运行。
我怀疑将 CA 证书分配给私有 IP 是否可行。如果我错了,请纠正我。
它在PORT 8008
上的localhost
中与各自的打印机IPs
和deviceID
完美配合,正如他们在SDK 文档connection function 中提到的那样。
当我尝试使用托管在域上的同一 Web 应用程序访问同一台打印机时,该应用程序在 PORT 8043
上的 HTTPS 协议上运行,SDK 文档 connection function 中特别提到了这一点。浏览器阻止 Web 应用程序请求打印收据并抛出 ERR_CERTIFICATE_INVALID
。
我检查了打印机配置,它显示打印机正在SELF SIGNED CERTIFICATE
上运行。
有没有办法让它可以访问?
我正在使用以下代码请求连接:
new epson.ePOSDevice().connect(ipAddress, port); PORT: 8008 for localhost and 8043 from hosted domain
【问题讨论】:
你找到解决这个问题的方法了吗? @JoeAllen,运气不好,但是有一个解决方法,如果用户首先访问打印机的 url 然后尝试打印,它应该可以工作。 【参考方案1】:您在此处的选择有点有限,要么您需要在打印机上安装签名证书,要么您需要将浏览器配置为允许自签名证书,这是浏览器制造商多年来一直在努力解决的问题。
您没有说明您使用的是哪种打印机或浏览器,因此很难给出完整的答案,但是如果您使用 Chrome,您可以关注这些instructions。
【讨论】:
我已经提到了打印机型号,我还添加了有问题的目标浏览器 你有没有看到这个问题***.com/questions/50116786/… 是的,我愿意,但如果我必须针对可能工作的单个用户,但要求每个用户添加证书然后配置他们的浏览器可能不是一个好主意。我想我在 SDK 中遗漏了一些东西,因为它们为 SSL/TLS 连接提供了一个单独的端口 8043,那么该端口的用途是什么? 我猜这是用于信息亭类型设置,您可以在其中控制每个浏览器。如果您希望任何用户连接到打印机,您唯一的选择是将签名证书放在打印机上。我建议你与制造商谈谈如何做到这一点,如果他们不支持你有问题。 这就是说也许你可以在打印机和网络之间创建一个代理服务器,这样除了不可靠的证书之外只有代理需要以上是关于从受 SSL 保护的 HTTPS React JS Web 应用程序连接本地连接的打印机的主要内容,如果未能解决你的问题,请参考以下文章