javascript - 如何从通过 https 加载的网页与桌面应用程序通信

标签 javascript ssl browser ssl-certificate desktop-application

我正在尝试制作从浏览器中运行的页面接收消息的桌面应用程序。桌面应用程序可以用任何方式编写,我只需要能够从浏览器中与之对话即可。该网站是用 Angular 编写的。我不关心桌面应用程序的响应或需要以任何方式与浏览器通信。虽然通过 https 提供网站会导致问题(但这是一项要求),我想知道解决这些问题的好方法是什么。

理想的解决方案是让应用程序成为网络服务器,只需将网站发布到 localhost:PORT,服务器就会收到请求并执行它需要执行的操作。但是,由于该网站是通过 https 提供服务的,因此由于混合内容规则,它会阻止对本地主机的 http 请求。

我尝试在页面上提交一个表单并将目标设置为隐藏的 iframe,但由于它不是 https,它也被阻止了。

我尝试将目标更改为 _blank,这“有效”但它会打开一个包含响应的新选项卡,这在您使用该网站时真的很烦人(它应该在后台) .我将响应设置为在其中包含一个 window.close,但窗口每次仍然闪烁一秒钟,这是我想避免的事情。

我尝试为桌面应用程序的服务器制作一个自签名证书,但浏览器会阻止它,直到您第一次接受它,我不希望人们必须在他们的浏览器中转到“https://localhost:1234”,然后接受不安全的。我在想获得本地服务器的有效证书也是不可能的。

有没有办法做到这一点?谢谢

最佳答案

您可以将浏览器重定向到http://localhost:PORT (例如,在 JS 中使用状态代码 302 或 window.location)并在查询字符串中将数据传递给桌面应用程序。那应该在没有警告的情况下在浏览器中执行。然后您可以将一些 html 从桌面应用程序返回到浏览器。如果您的桌面应用程序数据太大而无法在查询字符串中编码,您可以在桌面应用程序可以下载数据的查询字符串中仅传递 url。

关于javascript - 如何从通过 https 加载的网页与桌面应用程序通信,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28784865/

相关文章:

javascript - "Route was not found"Ember.js

javascript - 在 MarkLogic 中使用 REST API 搜索调用仅提取部分 JSON 文档

c++ - libcurl 是否支持发送不加密的电子邮件?

css - 缓存的 CSS 文件将在浏览器中更新多长时间?

html - 如何根据浏览器选项卡的状态动态更改我的网站图标?

php - 对象没有方法排序

php - Prestashop 迁移,index.php 未执行

ssl - 在 JBoss AS 7 中设置 SSL

javascript - Chrome 上的 Angular 加载空白屏幕,控制台中没有错误

javascript - 遇到node.js TypeError : First argument must be a string or Buffer with the simplest possible script