SignalR响应覆盖标头

evi*_*laf 6 signalr asp.net-web-api owin

我已经在一个WebAPI服务中构建了一个简单的SignalR集线器,我在WebAPI和SignalR上都包含了所有必需的CORS属性.我的WebAPI端点都按预期工作,但SignalR不是.

我已经尝试了所有我能想到的和我在网上找到的所有内容但没有任何作用,我已经尝试过这个答案,而另一个则没有解决方案.

我的SignalR扩展方法如下所示

public static IAppBuilder UseSignalrNotificationService(this IAppBuilder app)
    {
        var config = new HubConfiguration();
        config.Resolver = new HubDependencyResolver();
        config.EnableDetailedErrors = true;
        app.UseCors(CorsOptions.AllowAll);
        app.MapSignalR(config);

        return app;
    }
Run Code Online (Sandbox Code Playgroud)

我甚至尝试使用Web.config在所有请求上添加响应头但我总是得到相同的错误:

XMLHttpRequest无法加载https:// MyApplicationServer/notifications/signalsr/negotiate?clientProtocol = 1.5&access_token =&connectionData =.当credentials标志为true时,不能在'Access-Control-Allow-Origin'标头中使用通配符'*'.因此不允许原点'MyOriginService'访问.XMLHttpRequest的凭证模式由withCredentials属性控制.

evi*_*laf 13

经过更多的研究和摆弄问题的服务器端,我遇到了这个答案,发现错误与客户端的请求.根据此GitHub问题,请求的"withCredentials"参数始终设置为"true".解决方案是在客户端上调用start方法,如下所示:

$.connection.hub.start({ withCredentials: false }).done(function () {  //... }
Run Code Online (Sandbox Code Playgroud)