问题的原因是通过CORS协议进行跨域时,服务器返回的Access-Control-Allow-Origin响应头具有多个值,并且这些值不相等。要解决这个问题,需要在服务器端进行设置。
在ASP.NET Core Web API中,通过在Startup.cs文件中的ConfigureServices方法中添加以下代码来启用CORS:
public void ConfigureServices(IServiceCollection services) { services.AddCors(options => { options.AddPolicy("MyCorsPolicy", builder => { builder.AllowAnyOrigin() .AllowAnyMethod() .AllowAnyHeader(); }); });
services.AddMvc();
}
这段代码将在应用程序中添加一个名为“MyCorsPolicy”的CORS策略,并允许来自任何源的请求、任何HTTP方法和任何标头。
接下来,在Configure方法中添加以下代码:
public void Configure(IApplicationBuilder app, IHostingEnvironment env) { app.UseCors("MyCorsPolicy");
app.UseMvc();
}
这段代码将使用刚才创建的CORS策略,以允许来自任何源的跨域请求。
当然,你也可以在上述代码中指定特定的源,以限制允许访问的源。
例如:
options.AddPolicy("MyCorsPolicy", builder => { builder.WithOrigins("http://example.com") .AllowAnyMethod() .AllowAnyHeader(); });
这段代码将允许来自“http://example.com”源的任何请求,并且任何HTTP方法和标头都是允许的。