首页 > 解决方案 > .NET 5 对预检请求的响应未通过访问控制检查:请求的资源上不存在“Access-Control-Allow-Origin”标头

问题描述

我目前正在尝试在 .NET Core 5 API 上启用 CORS。非预检,跨域请求工作正常;但是,所有OPTIONS请求都会导致上述消息。我Startup.cs看起来像这样:

public void ConfigureServices(IServiceCollection services)
{
  services.AddCors(options =>
  {
    options.AddPolicy(corsPolicyName, builder =>
    {
      builder
        .WithOrigins("http://localhost:3000")
        .AllowAnyHeader()
        .AllowAnyMethod()
        .AllowCredentials();
    });
  });
  ...
}

public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
  app.UseHttpsRedirection();
  app.UseRouting();
  app.UseCors(corsPolicyName);
  app.UseAuthorization();
  app.UseEndpoints(endpoints =>
  {
    endpoints.MapControllers();
  });
}

在查看了其他几个线程之后,我似乎无法弄清楚我的配置有什么问题。任何帮助将不胜感激。

标签: c#.net.net-corecors.net-5

解决方案


消除 :

.AllowCredentials();

并在 UseRouting 和 UseAuthorization 之间移动 app.UseCors(corsPolicyName):


  app.UseHttpsRedirection();
  app.UseRouting();
app.UseCors(corsPolicyName);
  app.UseAuthorization();


推荐阅读