首页 > 解决方案 > 如何使用信号器允许 cors

问题描述

使用 Signalr 开发应用程序,设法通过连接到 API 来解决 cors 错误,但是当尝试连接到集线器时,它显示下面的错误,即使使用不同的端口在我的本地计算机上调试也不会发生。

访问从源“http://iisServer”获取“http://iisServer:10079/fareg/signalr/negotiate?negotiateVersion=1”已被 CORS 策略阻止:对预检请求的响应未通过访问控制检查:请求的资源上不存在“Access-Control-Allow-Origin”标头。如果不透明的响应满足您的需求,请将请求的模式设置为“no-cors”以获取禁用 CORS 的资源。

这是我在应用程序上的配置

        public void ConfigureServices(IServiceCollection services)
    {

        services.AddCors();
        services.AddSignalR();//.AddMessagePackProtocol();

        services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_1);

        //add Windows authentication for http options request
        services.AddAuthentication(IISDefaults.AuthenticationScheme);
        services.AddMvc(config =>
        {
            var policy = new AuthorizationPolicyBuilder()
                .RequireAuthenticatedUser()
                .Build();
            config.Filters.Add(new AuthorizeFilter(policy));
        });

        services.AddDbContext<FAContext>(options =>
            options.UseSqlServer(Configuration.GetConnectionString("FADB")));


        
    }

    // This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
    public void Configure(IApplicationBuilder app, IHostingEnvironment env)
    {
        app.UseCors(options =>
        {
            //options.WithOrigins("http://schi-iis1zsus", "http://localhost:4200");
            options.AllowAnyOrigin();
            options.AllowAnyMethod();
            options.AllowAnyHeader();
            options.AllowCredentials();
        });

        app.UseSignalR(routes =>
        {
            routes.MapHub<Hubs.HubFA>("/signalr");
        });

        if (env.IsDevelopment())
        {
            app.UseDeveloperExceptionPage();
        }
        else
        {
            app.UseHsts();
        }

        app.UseHttpsRedirection();



        app.UseMvc();
    }

请帮忙,我到处找,但还没有解决这个问题。

标签: c#apiiiscorssignalr

解决方案



推荐阅读