ASP .NET Core 中的 CORS 问题 - 响应中“Access-Control-Allow-Origin”标头的值不能是通配符“*”

Sha*_*ran 3 c# cors asp.net-web-api asp.net-core

我收到以下错误

从源“http://localhost: 23456”访问“ http://localhost:5000/api/values/track/?name=name&time=1589425390870 ”处的 XMLHttpRequest 已被 CORS 策略阻止:“Access”的值当请求的凭据模式为“include”时,响应中的“-Control-Allow-Origin”标头不得为通配符“*”。XMLHttpRequest 发起的请求的凭据模式由 withCredentials 属性控制。

我已经配置了 Asp.net core 应用程序,如下所示

public void ConfigureServices(IServiceCollection services)
        {

            services.AddCors(o => o.AddPolicy("MyPolicy", builder =>
            {
                builder.AllowAnyOrigin()
                       .AllowAnyMethod()
                       .AllowAnyHeader().AllowCredentials() ;
            }));


            services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_2);
        }

    public void Configure(IApplicationBuilder app, IHostingEnvironment env)
        {
            if (env.IsDevelopment())
            {
                app.UseDeveloperExceptionPage();
            }

            app.UseCors("MyPolicy");
            app.UseMvc();
        }
Run Code Online (Sandbox Code Playgroud)

内容类型:application/x-www-form-urlencoded

有人可以帮我解决这个问题吗?

Fei*_*Han 5

当请求的凭据模式为“include”时,响应中“Access-Control-Allow-Origin”标头的值不能是通配符“*”。

As error 表示您同时使用AllowAnyOrigin和AllowCredentials方法配置应用程序,这会导致 CORS 服务返回无效的 CORS 响应。

您可以修改代码以启用特定来源,如下所示。

builder.WithOrigins("set_specified_origins_here")
        .AllowAnyMethod()
        .AllowAnyHeader()
        .AllowCredentials();
Run Code Online (Sandbox Code Playgroud)

有关“设置允许的来源”的详细信息,请查看以下文档:https: //learn.microsoft.com/en-us/aspnet/core/security/cors ?view=aspnetcore-2.0#set-the-allowed-起源-1

  • 韩飞,这对我有用。真的从心底里感谢您:) 感谢您的快速帮助。 (2认同)