Я пытаюсь вызвать веб-API PUT, реализованный в ASP.NET, из угловой службы, которую я получил Cross-Origin Request Blocking: The "Same Origin" policy does not allow access to the remote resource located at http://localhost:8888/api/users/17. Reason: Missing method in the "Access-Control-Allow-Methods" header
Я смог без проблем вызвать метод GET и POST из anglar
исходный код:
edit(user : User) : Observable<object> {
his.httpClient.put('http://localhost:8888/api/users/' + user.userId, user);
}
вот PUT web api:
[HttpPut("{id}")]
public async Task<ActionResult> Put(int id, [FromBody] UserViewModel model)
{
try
{
var user = _mapper.Map<UserViewModel, User>(model);
var status = await _repository.UpdateUserAsync(user);
if (!status)
{
return BadRequest("failed to edit user");
}
return Ok(_mapper.Map<User, UserViewModel>(user));
}
catch (Exception exp)
{
_loger.LogError(exp.Message);
return BadRequest("failed to edit user");
}
}
, и я также добавил Cors в сервисы в классе запуска следующим образом:
services.AddCors(options =>
{
options.AddPolicy("CorsPolicy",
builder => builder.AllowAnyOrigin()
.AllowAnyMethod()
.AllowAnyHeader()
.AllowCredentials());
});