C# 400 Angular 9中来自WebApi的错误请求(使用HttpClient)
下面是返回错误请求的Asp.net核心WebAPI。当我通过postman调用web api时,它成功地工作了。但是当我打电话给angular的时候它就不起作用了C# 400 Angular 9中来自WebApi的错误请求(使用HttpClient),c#,angular,rest,.net-core,asp.net-core-webapi,C#,Angular,Rest,.net Core,Asp.net Core Webapi,下面是返回错误请求的Asp.net核心WebAPI。当我通过postman调用web api时,它成功地工作了。但是当我打电话给angular的时候它就不起作用了 [HttpPost] [Route("Login")] public async Task<ActionResult> Post([FromBody]LoginCommand command) { var result = await Mediator.Send(comman
[HttpPost]
[Route("Login")]
public async Task<ActionResult> Post([FromBody]LoginCommand command)
{
var result = await Mediator.Send(command);
if (!result.Succeeded)
{
return BadRequest(result.Errors);
}
return Ok(result.Data);
}
[HttpPost]
[路线(“登录”)]
公共异步任务
网络:
如果您使用asp.net core 3.0+,则需要在asp.net core web api项目startup.cs
中配置CORS
,在app.UseRouting()
和app.UseEndpoints()之间添加app.UseCors()
:
app.UseRouting();
app.UseCors( builder =>
{
builder.WithOrigins("https://localhost:5001")
.AllowCredentials()
.AllowAnyMethod()
.AllowAnyHeader();
});
app.UseEndpoints(endpoints =>
{
endpoints.MapControllers();
});
请参阅能否将您的chrome设置为英语并重新拍摄屏幕截图?浏览器控制台输出对于帮助您至关重要。它看起来像一个CORS问题。该服务是否在与客户端不同的应用程序中运行?看起来您的选项请求返回的是204。是否确定API端点URL(特别是端口号)以确保在UI指向的同一URL中运行API?是的,服务运行在与客户端不同的应用程序中。
post(url: string, data: Object = {}): Observable<any> {
const headers = { 'Accept': '*/*', 'Access-Control-Allow-Origin': '*', 'Access-Control-Allow-Methods': 'POST, GET, OPTIONS, HEAD','Content-Type': 'application/json',
'Access-Control-Allow-Headers': 'X-Requested-With,content-type' }
let result = this.http.post<any>(`${this.apiURL}${url}`, JSON.stringify(data), { headers });
console.log(result);
return result;
app.UseRouting();
app.UseCors( builder =>
{
builder.WithOrigins("https://localhost:5001")
.AllowCredentials()
.AllowAnyMethod()
.AllowAnyHeader();
});
app.UseEndpoints(endpoints =>
{
endpoints.MapControllers();
});