繁体   English   中英

.NET 5 对预检请求的响应未通过访问控制检查:没有'Access-Control-Allow-Origin' header 存在于请求的资源上

[英].NET 5 Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource

我目前正在尝试在 .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();
  });
}

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

消除:

.AllowCredentials();

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


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

在我的 API 上启用匿名身份验证解决了这个问题。 OPTIONS请求不包含凭据,因此不允许匿名身份验证导致它们被拒绝。

可以通过转到项目的属性 > 调试 > 选中“启用匿名身份验证”来启用匿名身份验证。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM