我试图对ASP.NET 5 Web Api控制器操作执行跨域POST请求。 我总是收到以下错误:“XMLHttpRequest无法加载http://localhost:8082/app/users。请求的资源上没有'Access-Control-Allow-Origin'标头,原因'http://localhost:20724'因此不被允许访问,响应的HTTP状态码为500。 “ 奇怪的只有它发生在POST方法。其他方法工作正常(GET,PUT) 这是我的API配置(Startup.cs):CORS不能使用ASP NET 5 Web Api
public void ConfigureServices(IServiceCollection services)
{
services.AddCors(options =>
{
// Define one or more CORS policies
options.AddPolicy("AllowAll", builder =>
builder.AllowAnyOrigin()
.AllowAnyMethod()
.AllowAnyHeader());
});
}
而且控制器:
[EnableCors("AllowAll")]
[Route("app/[controller]")]
public class UsersController : Controller
// POST api/users
[HttpPost]
public IActionResult Post([FromBody]UserEntity user)
{
if (!ModelState.IsValid) //Valida el modelo recibido 'user'
return new HttpStatusCodeResult(422);
else
{
UserEntity userCreated = _userServices.CreateUser(user);
if(userCreated != null)
return CreatedAtRoute("GetUserById", new { controller = "Users", id = userCreated.Id }, userCreated);
else
return new HttpStatusCodeResult(500);
}
}
我的客户是angularjs。这是代码:
$http.post(Config.apiHost + "users", user);
我在做什么错?
UPDATE
我已经解决了这个问题。虽然浏览器显示CORS错误,但我在POST方法上有内部错误。
您是否在启动时添加了CORS配置? https://docs.asp.net/projects/mvc/en/latest/security/cors-policy.html –
是的,我喜欢。我的问题只是POST方法。其他人工作正常。 – ratillo89
我没有看到你的代码有什么问题。如果什么都没有发生,我会建议在asp.net mvc github页面上打开一张票(https://github.com/aspnet/mvc/issues) –