我正在尝试构建一个浏览器原型< - > Windows应用程序通信,使用SignalR。
目标很简单:我在每个客户端上运行托盘应用程序,该应用程序读取智能卡并生成应传递给Web应用程序的值。
我在托盘应用程序上构建了一个自托管的SignalR集线器,网页与之成功通信。
问题是,在制作中,webapp是通过HTTPS提供的,而signalR中心是通过经典HTTP传递的(例如http://localhost:8080
),并且正如预期的那样,大多数现代浏览器抛出混合内容警告并拒绝与之交谈signalR。
我的问题是:
1)有没有办法避免混合内容警告?
2)构建支持HTTPS的自托管http服务器是否值得?如果是这样,浏览器是否会与https://localhost/
上的客户端通过一些自签名证书进行通信?
谢谢
答案 0 :(得分:1)
你在这里问两个问题:
避免IE中的混合内容警告 这很简单:转到工具 - > “Internet选项”并选择“安全”选项卡。确保选中 Internet 区域,然后单击自定义级别按钮。向下滚动到显示混合内容并将其设置为启用。
请注意,此设置是有原因的。更改它会带来安全风险,并且适用于您访问的所有Internet站点。不建议您的应用程序的未来用户更改此设置。但是,它仍然有可能。
所有其他常见浏览器也允许更改此设置。
使用自签名证书托管SSL服务器 这当然是可能的。但请注意,您将面临类似于上述警告的警告,即“不受信任的连接”警告。它们用于通知用户未经官方认证机构签署的证书。
创建自签名证书不应该太难(事实上,您甚至可能在多台计算机上重复使用相同的证书。这是使用未加密的HTTP的可接受替代方法)。这样做的好处是用户可以确认一次安全异常,并且不会在将来受到打扰;此外,在浏览除localhost
以外的其他页面时,这不会影响网络安全。