我正在使用TypeScript
作为客户端脚本语言制作Web应用程序。我使用的其他技术包括Spring Boot
,PostgreSQL
和Angular
。当用户单击网站上的按钮时,我已经运行的Java
桌面应用程序(与Web应用程序“独立”,而不是Web应用程序的服务器)应该接收从Web应用程序发送的数据,然后提示用户导入它进入桌面应用程序。
如何做到这一点?有没有可用的示例代码?
我可以在桌面应用程序上启动一个简单的侦听器服务器,等待客户端(浏览器)将导入数据的有效负载发送到侦听服务器(以独立于平台的方式)吗?
请注意,这与从Internet资源下载数据的桌面应用程序不同,因为资源应该通过浏览器本身的点击来确定,而不是通过桌面应用程序的界面。
Registering my Java
Desktop application to an URI
scheme只允许我使用自定义URI
作为参数启动桌面应用程序,并且只有Windows
,因此这不是一个令人满意的解决方案。
答案 0 :(得分:0)
我理解您的设置如下:
浏览器< - 通过Internet的HTTP / HTTPS - > SpringBoot
在浏览器中呈现的网页应与本地桌面应用程序通信。
解决方案是在您的网页和桌面应用程序之间建立HTTP连接,如下所示:
var req = new XMLHTTPRequest();
req.open("POST", "http://127.0.0.1:yourPort");
req.setRequestHeader("content-type", "application/x-www-form-urlencoded");
req.send("payload="+ myPayload);
当浏览器与SpringBoot服务器建立HTTPS连接时,您遇到的问题是浏览器可能会显示“混合内容警告”,因为安全的Web上下文(您的网页)通过HTTP访问资源。
幸运的是,最近Chrome,Firefox,Edge和Safari等现代浏览器都实现了W3C Secure Contexts working draft,因此将127.0.0.1作为可能值得信赖的访问权考虑:没有混合内容警告。
如果您将其投入生产,您必须意识到您的桌面应用程序现在容易受到XSS攻击。