我正在构建一个Angular应用程序,它调用.Net Core webapi。我已经能够设置它,以便能够使用CORS成功回电并获得响应。但是,当我将Authorization标头添加到Angular拦截器时,它会抛出以下错误。
错误访问'XMLHttpRequesthttp://localhost:57120/api/values'来自原点'http://localhost:4200'已被CORS策略阻止:对飞行前请求的响应未通过访问控制检查:请求的资源上不存在"access control Allow Origin"标头。
C#启动-配置方法
app.UseCors(
options =>
{
options.WithOrigins("http://localhost:4200");
options.WithHeaders("Access-Control-Allow-Credentials: true");
options.AllowCredentials();
}
);
角度HttpInterceptor
const token = localStorage.getItem('access-token');
const clone = request.clone({
headers: request.headers.set("Authorization", "Bearer " + token),
withCredentials: true,
});
return next.handle(clone);
您的启动配置错误。尝试使用命名的cors策略并更改您的应用程序。UserCors到anotner语法:
app.UseCors("CorsPolicy")
services.AddCors(opt => opt.AddPolicy("CorsPolicy", c =>
{
c.AllowAnyOrigin()
.AllowAnyHeader()
.AllowCredentials()
.AllowAnyMethod();
}));
如果它有效,那么您可以用选项替换c.AllowAnyOrigin((。WithOrigins(";http://localhost:4200"(;