要解决Angular POST和.NET Core WEB Api返回401未经授权错误和CORS(跨域资源共享)问题,可以按照以下步骤进行操作:
proxy.conf.json
文件,如果没有则创建该文件,并将以下内容添加到文件中:{
"/api/*": {
"target": "http://localhost:5000",
"secure": false,
"logLevel": "debug"
}
}
这将设置代理,将请求转发到.NET Core WEB Api的URL。
package.json
文件中,找到scripts
节,将start
命令更改为:"start": "ng serve --proxy-config proxy.conf.json"
这将在启动Angular开发服务器时应用代理配置。
Startup.cs
文件中,找到ConfigureServices
方法,并添加以下代码来启用CORS:public void ConfigureServices(IServiceCollection services)
{
services.AddCors(options =>
{
options.AddPolicy("AllowAllOrigins",
builder =>
{
builder.AllowAnyOrigin()
.AllowAnyHeader()
.AllowAnyMethod();
});
});
// ... 其他配置
}
Configure
方法中,添加以下代码以应用CORS策略:public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
// ... 其他配置
app.UseCors("AllowAllOrigins");
// ... 其他配置
}
在.NET Core WEB Api的控制器中,确保带有[Authorize]
特性的方法需要身份验证。如果要允许未经授权的访问,请确保不使用[Authorize]
特性。
在Angular项目中,确保在进行POST请求时,设置请求头的Content-Type
为application/json
,并将身份验证令牌(如果需要)添加到请求头中。
以上步骤完成后,重新启动Angular开发服务器和.NET Core WEB Api,应该能够解决401未经授权错误和CORS问题。