0

我正在构建一个调用 .Net Core webapi 的 Angular 应用程序。我已经能够将其设置为能够使用 CORS 成功回调并获得响应。但是当我将 Authorization 标头添加到 Angular 拦截器时,它会引发以下错误。

从源“http://localhost:4200”对“http://localhost:57120/api/values”的 XMLHttpRequest 的错误 访问已被 CORS 策略阻止:对预检请求的响应未通过访问控制检查:否Access-Control-Allow-Origin' 标头出现在请求的资源上。

C# 启动 - 配置方法

app.UseCors(
            options =>
            {
                options.WithOrigins("http://localhost:4200");
                options.WithHeaders("Access-Control-Allow-Credentials: true"); 
                options.AllowCredentials();
            }
        );

Angular HttpInterceptor

const token =  localStorage.getItem('access-token');
    
const clone = request.clone({
      headers: request.headers.set("Authorization", "Bearer " + token),
      withCredentials: true,
      
});

return next.handle(clone);
4

1 回答 1

0

您有错误的启动配置。尝试使用命名的 cors 策略并将您的 app.UserCors 更改为另一种语法:

  app.UseCors("CorsPolicy") 

services.AddCors(opt =>  opt.AddPolicy("CorsPolicy", c =>
            { 
                c.AllowAnyOrigin()
                   .AllowAnyHeader()
                    .AllowCredentials()
                    .AllowAnyMethod();
            }));

如果可行,则可以将 c.AllowAnyOrigin() 替换为 options.WithOrigins("http://localhost:4200");

于 2020-11-09T20:26:13.123 回答