Angular 10 和 net6.0 API 项目的 CORS 问题

CORS Issue with Angular 10 and net6.0 API project

来自 angular 项目,当我在后端发送 GET 请求时,它工作正常,但如果我发送 POST 请求和正文,那时候它不起作用。

Angular代码

    login(email: string, password: string) {        
    return this.http.post<any>(`${baseUrl}/authenticate`, { email, password }, { withCredentials: true })
        .pipe(map(account => {
            this.accountSubject.next(account);
            this.startRefreshTokenTimer();
            return account;
        }));
    }

.Net 控制器代码

    [HttpPost("authenticate")]
    public ActionResult<AuthenticateResponse> Authenticate(AuthenticateRequest model)
    {
        var response = _accountService.Authenticate(model, ipAddress());
        setTokenCookie(response.RefreshToken);
        return Ok(response);
    }

在控制器顶部添加在标志下方

[ApiController]
[Route("[controller]")]
[EnableCors("AllowOrigin")]

并在我的 Program.cs

中添加了 cors 允许代码
app.UseCors(x => x
.AllowAnyOrigin()
.AllowAnyMethod()
.AllowAnyHeader());

在我的浏览器控制台中显示此错误

我错过了什么?

您的请求只允许来自特定域,因为您是从“本地主机”发出请求,所以会收到此错误。 请要求 api 团队启用 CORS 以使其正常工作。

根据文档,您有两个选项来允许任何来源。使用通配符 *。 https://docs.microsoft.com/en-us/aspnet/core/security/cors?view=aspnetcore-6.0

   builder.Services.AddCors(p => p.AddPolicy("corsapp", builder =>
    {
        builder.WithOrigins("*").AllowAnyMethod().AllowAnyHeader();
    }));
    
    if (app.Environment.IsDevelopment())
    {
        app.UseSwagger();
        app.UseSwaggerUI();
    
    }
    //app cors
    app.UseCors("corsapp");

app.UseCors(
  options => options.WithOrigins("*").AllowAnyMethod().AllowAnyHeader()
      );

从方法中删除它

[EnableCors("AllowOrigin")]