【发布时间】:2014-12-24 06:44:59
【问题描述】:
我们的 Web 应用程序有一个按钮,它应该将数据发送到本地网络上的服务器,然后再在打印机上打印一些东西。
到目前为止,这很容易:该按钮使用令牌触发了对 http://printerserver/print.php 的 AJAX POST 请求,该页面连接到 Web 应用程序以验证令牌并获取要打印的数据,然后打印。
但是,我们现在通过 HTTPs 交付我们的 Web 应用程序(为此我宁愿不再使用 HTTP),并且较新版本的 Chrome 和 Firefox 不再向 HTTP 地址发出请求,它们不再甚至发送请求以检查 CORS 标头。
现在,跨协议 XHR 的现代替代方案是什么? Websockets 也有同样的问题吗? (谷歌搜索并没有弄清楚这里的当前状态。)我可以使用 TCP 套接字了吗?我也不想切换到 GET 请求,因为该操作不是幂等的,它可能对预加载和缓存有实际影响。
我可以以任何方式更改打印机服务器上的应用程序(所以我可以用 NodeJS 或其他东西替换它)但我不能更改用户的浏览器(信任 printerserver 的自签名证书例如)。
【问题讨论】:
-
只是一个想法,但您是否尝试过使用 CURL 来提出您的请求?因为 CURL 会创建自己的会话,所以它不应该受到浏览器行为方式的影响。
-
我认为从问题中可以清楚地看到:机器 printerserver 和用户的浏览器在一个网络中,Web 服务器在互联网上。
-
如果我理解正确,您正在尝试从 HTTPS 网站调用“printerserver/print.php”。尝试在 443 端口运行“printerserver/print.php”服务器 - 以支持 HTTPS,因此您的调用将使用相同的协议。
标签: https websocket cross-domain mixed-content