【问题标题】:CORS for SignalR persistant connectionSignalR 持久连接的 CORS
【发布时间】:2016-03-15 09:45:05
【问题描述】:

我在允许 SignalR 持久连接的所有来源时遇到问题。似乎,调用“UseCors”没有效果。端点初始化过程(与CORS相关设置)如下:
app.Map("/myendpoint", map => { map.UseCors(CorsOptions.AllowAll).RunSignalR<MyEndPoint>(); });

尝试从远程机器上的 js 代码建立连接仍会导致“请求的资源上不存在‘Access-Control-Allow-Origin’标头。”。我做错了什么吗,有没有办法允许 CROSS-ORIGIN 请求?

【问题讨论】:

    标签: .net cors signalr


    【解决方案1】:

    在启动中

    using System;
    using System.Threading.Tasks;
    using Microsoft.Owin;
    using Owin;
    using Microsoft.Owin.Cors;
    
    [assembly: OwinStartup(typeof(Werp.Wacc.Web.API.Startup))]
    
    namespace YourApplication.API
    {
    public class Startup
    {
        /// <summary>
        ///Configure Signal R
        /// </summary>
        public void Configuration(IAppBuilder app)
        {
            // For more information on how to configure your application, visit http://go.microsoft.com/fwlink/?LinkID=316888
            app.UseCors(CorsOptions.AllowAll);
            // Any connection or hub wire up and configuration should go here
            app.MapSignalR();
        }
    
    
      }
    
    }
    

    【讨论】:

    • 你应该编辑你的答案,而不是发布一个新的。
    • 是的。我打算这样做,现在我已经删除了我的第一个答案。
    • 我发现了这个令人讨厌的错误的原因,结果完全不同:该应用程序在具有非常有限权限的用户下在 linux (mono) 上运行。因此请求处理过程会崩溃,返回响应 500 并跳过将 CORS 标头添加到响应中。简而言之:永远记住,当您遇到应用程序错误时,您也很可能会遇到 CORS 错误,因为应用程序将简单地跳过添加任何必要的标头。
    • 以我的方式配置信号 R 也跳过了 cors
    猜你喜欢
    • 1970-01-01
    • 2012-11-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-06
    相关资源
    最近更新 更多