【问题标题】:SignalR cross-domain without CORS无 CORS 的 SignalR 跨域
【发布时间】:2013-06-24 01:55:27
【问题描述】:

我正在尝试确认是的,客户端可以向另一个域上的 ASP.NET 站点发送和接收消息,而无需运行启用 SignalR 的 ASP.NET 的 IIS 服务器支持 CORS。

谁能给我一个例子,我可以看看CORS 没有用作跨域机制的地方吗?

我们有 IE 9 客户端,希望将不同域上的三个站点推/拉到单个 ASP.NET + SignalR 服务器。这可以做到吗?怎么样?

【问题讨论】:

    标签: asp.net cross-domain signalr cors


    【解决方案1】:

    如果 cors 不可用,SignalR 使用带有 jsonp 的 longPolling 传输。

    请记住,jsonp 在设计上是不安全的,并且可能会限制您通过网络发送的数据,因为所有数据都是通过查询字符串发送的。

    您不必为 SignalR 使用 jsonp 提供有关客户端的任何其他信息,它应该可以正常工作。

    为确保跨域通信在服务器上正常工作,您必须启用它:

    Routes.RouteTable.MapHubs(new HubConfiguration { EnableCrossDomain = true });
    

    【讨论】:

      【解决方案2】:

      补充一点,WebSockets(跨源)将需要 CORS,所以最终(如果你想使用 Web 套接字)你需要在服务器上支持它。

      【讨论】:

        【解决方案3】:

        要在使用带有 OWIN 中间件而不是常规 ASP.NET 管道的 SignalR 2.0 时启用此功能,请从 NuGet 安装 Microsoft.Owin.Cors 包,然后执行以下操作:

        [assembly: OwinStartupAttribute(typeof(OwinStartup))]
        
        namespace Website.App_Start
        {
            public partial class OwinStartup
            {
                public void Configuration(IAppBuilder app)
                {
                    app.Map("/signalr", map =>
                    {
                        map.UseCors(CorsOptions.AllowAll);
                        map.RunSignalR(new HubConfiguration {EnableJSONP = true});
                    }
                }
            }
        }
        

        更多详情:http://www.asp.net/signalr/overview/signalr-20/hubs-api/hubs-api-guide-javascript-client#crossdomain

        【讨论】:

          猜你喜欢
          • 2013-03-06
          • 2021-11-16
          • 1970-01-01
          • 1970-01-01
          • 2018-05-04
          • 2019-10-21
          • 2017-10-09
          • 2013-07-09
          • 2016-05-05
          相关资源
          最近更新 更多