首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何为ASPNETCore 2.1应用程序配置SignalR Cors?

如何为ASPNETCore 2.1应用程序配置SignalR Cors?
EN

Stack Overflow用户
提问于 2018-08-13 06:45:02
回答 1查看 96关注 0票数 1

我正在尝试为我的aspnetcore 2.1应用程序配置CORS。我一直在密切关注文档。我的启动文件配置如下。

代码语言:javascript
复制
    public void ConfigureServices(IServiceCollection services)
    {
        services.AddCors(options => options
            .AddPolicy("CorsPolicy", builder =>
            {
                builder.WithOrigins("http://sitetracker")
                    .AllowAnyHeader();
            }));

        services.AddMvc();
        services.AddSignalR(o => o.EnableDetailedErrors = true);
        services.AddDbContext<BiometricContext>();
    }

    public void Configure(IApplicationBuilder app, IHostingEnvironment env)
    {

        if (env.IsDevelopment())
        {
            app.UseDeveloperExceptionPage();
        }
        app.UseCors("CorsPolicy");

        app.UseSignalR(routes =>
        {
            routes.MapHub<BiometricsHub<User>>("/biometricshub");
        });
        app.UseMvc();
    }

我配置了和angular项目来启动集线器连接,并在服务器上等待将一些信息推送到客户端。

代码语言:javascript
复制
    var port = 58422;
    this.connection = new HubConnectionBuilder()
        .withUrl(`http://localhost:${port}/BiometricsHub`)
        .configureLogging(LogLevel.Information)
        .build();

    this.connection.on("ReceiveActiveIdentities", (identities) => {
        debugger // Waiting here to receive data
    });

    this.connection.start().catch(err => {
        debugger // Error is "Error" with and error code of 0
        console.error(err.toString());
    });

调用connection.start时会导致错误。

因为我不知道为什么会发生cors错误,所以我想知道代码是否以其他方式损坏了。我通过在run菜单中执行以下行,在浏览器会话中禁用了cors安全性。

代码语言:javascript
复制
chrome.exe --user-data-dir="C:/Chrome dev session" --disable-web-security

一旦CORS被禁用,代码就会像预期的那样在我的客户端回调中返回数据。这让我相信CORS配置之外的所有东西都是正确的。

我的配置中缺少什么?我还是不能让它工作。

EN

回答 1

Stack Overflow用户

发布于 2018-08-13 07:58:25

我想我以前已经在我的许多配置中尝试过。然而,情况似乎并非如此。也许在当时,app.UseCors()遵循了app.UseMvc,这显然是一个禁忌。

代码语言:javascript
复制
builder.WithOrigins("http://sitetracker")
   .AllowAnyHeader()
   .AllowAnyMethod()
   .AllowCredentials();

它允许的以下三个版本需要到位或更受限制的版本,这些版本允许您的特定操作或方法根据需要执行。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51813458

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档