网页如何向本地网络发送消息

And*_*eKR 6 https websocket cors mixed-content

我们的Web应用程序有一个按钮,可以将数据发送到本地网络上的服务器,然后在打印机上打印.

到目前为止很容易:按钮触发了一个http://printerserver/print.php带有令牌的AJAX POST请求,该页面连接到Web应用程序以验证令牌并获取要打印的数据然后打印.

但是,我们现在通过HTTP提供我们的Web应用程序(我宁愿不再回到HTTP),而新版本的Chrome和Firefox不再向HTTP地址发出请求,他们甚至不发送请求检查CORS标头.

现在,什么是跨协议XHR的现代替代品?Websockets是否遭遇同样的问题?(谷歌搜索没有说明这里的当前状态是什么.)我可以使用TCP套接字吗?我也不愿意切换到GET请求,因为该动作不是幂等的,它可能对预加载和缓存有实际意义.

我可以以任何方式更改打印机服务器上的应用程序(因此我可以用NodeJS或其他东西替换它)但我无法更改用户的浏览器(例如,信任打印机服务器的自签名证书).

Ray*_*tre 1

您可以将打印请求存储在网络服务器上的队列中,并使打印服务器定期轮询打印请求。

如果不可能,我会在网络服务器和打印服务器网络之间设置隧道或 VPN。这样您就可以从服务器端的网络服务器而不是客户端发出打印请求。如果您使用curl,则有一些标志可以忽略无效的SSL证书等(我仍然怀疑无论如何引入队列会更好,因此打印请求不会被阻塞)。

如果网络服务器可以与打印服务器所在的网络上的某个设备建立 ssh 连接,您可以执行以下操作: ssh params user@host some curl command here

我能想到的第三个选项,如果打印服务器可以绑定到例如网络服务器域的子域,例如:print.somedomain.com,您也许可以使其受到 somedomain.com 证书的信任,IIRC 您必须创建一个来自打印服务器证书的 CSR(证书签名请求),并使用 somedomain.com 证书对其进行签名。也许它本身甚至不需要成为子域,但也许这是浏览器在客户端执行此操作的要求。