Angular&.NET项目中的CORS突发问题

问题描述 投票:0回答:1

我有一个基于.NET Core的REST服务作为后端,而Angular 9作为前端。功能和交互一直都很好。今天突然之间,在项目中没有任何相关更改,它停止了工作。每次使用登录功能时,都会出现异常:

从原始本地主机到XMLHttpRequest的访问已被阻止 通过CORS策略:在上不存在“ Access-Control-Allow-Origin”标头 所请求的资源。

我的后端允许使用CORS:

    services.AddCors(options =>
    {
        options.AddPolicy("CorsPolicy",
            builder => builder.WithOrigins("http://localhost:4200")
            .AllowAnyMethod()
            .AllowAnyHeader()
            .AllowCredentials());
    });

Angular的登录功能是:

@Injectable()
export class AuthService {
  login(credentials) {
    sessionStorage.removeItem('token');

    this.isBusy = true;

    this.http.post<any>(this.loginUrl, credentials, { observe: 'response' }).subscribe(res => {   

      this.authenticate(res.body);

    }, error => { 
      sessionStorage.removeItem('token');
      this.router.navigate(['/logout'])
    })
  }


  authenticate(res) {
    sessionStorage.setItem('token', res);

    this.router.navigate(['/']);
  }
}

我不明白,如果几个月正常运行,为什么突然停止工作。请指教。

c# angular asp.net-core angular7 angular9
1个回答
0
投票

ASP.NET Core中中间件的顺序可能是一个问题。 Cors应该在添加任何控制器或MVC之前。

// Correctly applies Cors
services.AddCors();
services.AddControllers();

// Doesn't apply Cors
services.AddControllers();
services.AddCors();

您的Configure(IApplicationBuilder, IWebHostEnvironment)通话中也是如此。我通常将app.UseCors()作为该方法的第一行。

© www.soinside.com 2019 - 2024. All rights reserved.