如何在跨域方案中避免使用signalR的"混合内容警告"?

tgg*_*ggm 6 cross-domain cors signalr

我正在尝试使用SignalR构建浏览器< - > windows app通信的原型.

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

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

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

我的问题是:

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

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

谢谢

lik*_*eit 0

你在这里问两个问题:

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

请注意,此设置的存在是有原因的。更改它会带来安全风险,并且它适用于您访问的所有互联网站点。不建议要求应用程序的未来用户更改此设置。然而,这仍然是可能的。

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

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

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