【问题标题】:SignalR HTTPS clientSignalR HTTPS 客户端
【发布时间】:2013-07-19 15:47:11
【问题描述】:

使用 SignalR 0.53 和 OWIN 自托管,我能够让 HTTPS 客户端成功连接到非 HTTPS 本地主机端口。

我现在已经升级到 SignalR 1.1.2。

我启用了跨域有非 HTTPS 客户端连接成功。但是,现在似乎 HTTPS 客户端将被阻止。

注意:我还必须使用 IE10。 这出现在控制台中:

SEC7111: HTTPS security is compromised by http://localhost:9100/signalr/hubs 

显示“SignalR:协商请求期间出错:未定义”的警报。

我该如何解决这个问题?

【问题讨论】:

    标签: c# signalr internet-explorer-10 self-hosting owin


    【解决方案1】:

    这只是标准的mixed-mode 连接阻塞。当您在使用 HTTPS 的页面上时,来自该页面的所有资源都应该是 HTTPS,否则即使您认为自己在安全页面上,您也可能会被诱骗以明文形式发送数据。因此,浏览器(至少是 IE)通过不允许这种形式的混合模式通信来保护您。如果您的页面是 HTTPS,那么您的 SignalR 连接也需要是 HTTPS。

    【讨论】:

    • 我已经在 IE 中启用了混合模式。这不可能是导致问题的原因。
    • 嗯,这就是 SEC7111 错误告诉您的内容。你不必相信我的话:bing.com/search?q=SEC7111。
    • 是的,我明白了,我只是对为什么它在以前的设置中工作感到困惑。我原以为启用混合模式就足够了,但显然不是。
    • 嗯,你确定你是专门为 Intranet Zone 配置的吗?
    • 是的,我有。我将在 HTTPS 上托管 hubs 文件作为解决方法。谢谢
    【解决方案2】:

    最终设法找到了解决办法。安全问题是一个红鲱鱼。在IE10上正常情况下会使用jsop并给出这个消息:

    “SignalR:使用 jsonp,因为这个浏览器不支持 CORS”

    但是,对于这个特定的客户,这并没有发生。连接时明确指定使用 jsonp 可解决问题。

    $.connection.hub.start({ jsonp : true },function () { ...
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-11-08
      • 2012-10-10
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多