Angular 10 和 net6.0 API 项目的 CORS 问题
CORS Issue with Angular 10 and net6.0 API project
来自 angular 项目,当我在后端发送 GET 请求时,它工作正常,但如果我发送 POST 请求和正文,那时候它不起作用。
Angular代码
login(email: string, password: string) {
return this.http.post<any>(`${baseUrl}/authenticate`, { email, password }, { withCredentials: true })
.pipe(map(account => {
this.accountSubject.next(account);
this.startRefreshTokenTimer();
return account;
}));
}
.Net 控制器代码
[HttpPost("authenticate")]
public ActionResult<AuthenticateResponse> Authenticate(AuthenticateRequest model)
{
var response = _accountService.Authenticate(model, ipAddress());
setTokenCookie(response.RefreshToken);
return Ok(response);
}
在控制器顶部添加在标志下方
[ApiController]
[Route("[controller]")]
[EnableCors("AllowOrigin")]
并在我的 Program.cs
中添加了 cors 允许代码
app.UseCors(x => x
.AllowAnyOrigin()
.AllowAnyMethod()
.AllowAnyHeader());
在我的浏览器控制台中显示此错误
我错过了什么?
您的请求只允许来自特定域,因为您是从“本地主机”发出请求,所以会收到此错误。
请要求 api 团队启用 CORS 以使其正常工作。
根据文档,您有两个选项来允许任何来源。使用通配符 *。
https://docs.microsoft.com/en-us/aspnet/core/security/cors?view=aspnetcore-6.0
builder.Services.AddCors(p => p.AddPolicy("corsapp", builder =>
{
builder.WithOrigins("*").AllowAnyMethod().AllowAnyHeader();
}));
if (app.Environment.IsDevelopment())
{
app.UseSwagger();
app.UseSwaggerUI();
}
//app cors
app.UseCors("corsapp");
或
app.UseCors(
options => options.WithOrigins("*").AllowAnyMethod().AllowAnyHeader()
);
从方法中删除它
[EnableCors("AllowOrigin")]
来自 angular 项目,当我在后端发送 GET 请求时,它工作正常,但如果我发送 POST 请求和正文,那时候它不起作用。
Angular代码
login(email: string, password: string) {
return this.http.post<any>(`${baseUrl}/authenticate`, { email, password }, { withCredentials: true })
.pipe(map(account => {
this.accountSubject.next(account);
this.startRefreshTokenTimer();
return account;
}));
}
.Net 控制器代码
[HttpPost("authenticate")]
public ActionResult<AuthenticateResponse> Authenticate(AuthenticateRequest model)
{
var response = _accountService.Authenticate(model, ipAddress());
setTokenCookie(response.RefreshToken);
return Ok(response);
}
在控制器顶部添加在标志下方
[ApiController]
[Route("[controller]")]
[EnableCors("AllowOrigin")]
并在我的 Program.cs
中添加了 cors 允许代码app.UseCors(x => x
.AllowAnyOrigin()
.AllowAnyMethod()
.AllowAnyHeader());
在我的浏览器控制台中显示此错误
我错过了什么?
您的请求只允许来自特定域,因为您是从“本地主机”发出请求,所以会收到此错误。 请要求 api 团队启用 CORS 以使其正常工作。
根据文档,您有两个选项来允许任何来源。使用通配符 *。 https://docs.microsoft.com/en-us/aspnet/core/security/cors?view=aspnetcore-6.0
builder.Services.AddCors(p => p.AddPolicy("corsapp", builder =>
{
builder.WithOrigins("*").AllowAnyMethod().AllowAnyHeader();
}));
if (app.Environment.IsDevelopment())
{
app.UseSwagger();
app.UseSwaggerUI();
}
//app cors
app.UseCors("corsapp");
或
app.UseCors(
options => options.WithOrigins("*").AllowAnyMethod().AllowAnyHeader()
);
从方法中删除它
[EnableCors("AllowOrigin")]