Angular 添加授权标头时出现CORS错误
我正在构建一个调用.Net核心webapi的Angular应用程序。我已经能够设置它,以便能够成功地使用CORS回电并获得响应。但是,当我将授权头添加到Angular拦截器时,它会抛出以下错误 错误 访问位于“”的XMLHttpRequesthttp://localhost:57120/api/values“起源”http://localhost:4200'已被CORS策略阻止:对飞行前请求的响应未通过访问控制检查:请求的资源上不存在'access control Allow Origin'标头 C#启动-配置方法Angular 添加授权标头时出现CORS错误,angular,asp.net-core,cors,authorization-header,Angular,Asp.net Core,Cors,Authorization Header,我正在构建一个调用.Net核心webapi的Angular应用程序。我已经能够设置它,以便能够成功地使用CORS回电并获得响应。但是,当我将授权头添加到Angular拦截器时,它会抛出以下错误 错误 访问位于“”的XMLHttpRequesthttp://localhost:57120/api/values“起源”http://localhost:4200'已被CORS策略阻止:对飞行前请求的响应未通过访问控制检查:请求的资源上不存在'access control Allow Origin'标头
app.UseCors(
options =>
{
options.WithOrigins("http://localhost:4200");
options.WithHeaders("Access-Control-Allow-Credentials: true");
options.AllowCredentials();
}
);
角形http拦截器
const token = localStorage.getItem('access-token');
const clone = request.clone({
headers: request.headers.set("Authorization", "Bearer " + token),
withCredentials: true,
});
return next.handle(clone);
您的启动配置错误。尝试使用命名cors策略并将app.UserCors更改为其他语法:
app.UseCors("CorsPolicy")
services.AddCors(opt => opt.AddPolicy("CorsPolicy", c =>
{
c.AllowAnyOrigin()
.AllowAnyHeader()
.AllowCredentials()
.AllowAnyMethod();
}));
如果有效,则可以用options.WithOrigins()替换c.AllowAnyOrigin()http://localhost:4200"); 您能否验证邮件头是否已在邮递员中返回?请注意,如果您的代码在头被sat之前中断,那么您将得到cors错误而不是http错误。我从未使用过Postman。我可以试着弄明白。所以这里有一个杀手,我的工作是阻止邮递员。但据我所知,似乎没有抛出任何错误。它可以在没有添加授权标头的行的情况下工作,在我添加授权标头时不会工作。中间件顺序的合理性检查:您的CORS中间件在您的授权中间件之前(应该是)吗?我仍然使用app.UseCors()方法,但包括与您相同的选项。我给你答案是因为它有效。再次感谢你。