6

我正在尝试使用 SignalR 构建浏览器 <-> windows 应用程序通信的原型。

目标很简单:我在每个客户端上运行一个托盘应用程序,它读取智能卡并生成一个应该传递给 Web 应用程序的值。

我在托盘应用程序上构建了一个自托管的 SignalR 集线器,并且网页与它成功通信。

问题是,在生产中,webapp 是通过 HTTPS 交付的,而 signalR 集线器是通过经典的 HTTP(例如http://localhost:8080)交付的,并且正如预期的那样,大多数现代浏览器都会抛出混合内容警告并拒绝与 signalR 对话。

我的问题是:

1)有没有办法避免混合内容警告?

2) 是否值得构建一个支持 HTTPS 的自托管 http 服务器?如果是这样,浏览器是否会https://localhost/使用一些自签名证书与客户端通信?

谢谢

4

1 回答 1

1

你在这里问两个问题:

避免在 IE 中出现混合内容警告 这很简单:转到工具 -> Internet 选项并选择安全选项卡。确保选择Internet区域,然后单击自定义级别按钮。向下滚动以显示混合内容并将其设置为启用

请注意,此设置的存在是有原因的。更改它会带来安全风险,它适用于您访问的所有 Internet 站点。不建议让您的应用程序的未来用户更改此设置。但是,它仍然是可能的。

所有其他常见浏览器也允许更改此设置。

使用自签名证书托管 SSL 服务器 这当然是可能的。但是,请注意,您将面临与上述类似的警告,即“不受信任的连接”警告。它们用于通知用户有关未经官方证书颁发机构签名的证书。

创建自签名证书应该不会太难(事实上,您甚至可以在多台机器上重复使用相同的证书。这是使用未加密 HTTP 的可接受替代方案)。这样做的好处是用户可以确认一次安全异常,以后不用再被打扰;此外,这不会影响浏览其他页面时的网络安全,而不是localhost.

于 2013-05-06T15:51:41.537 回答