【发布时间】:2016-06-04 08:59:11
【问题描述】:
我正在尝试对 ASP.NET 5 Web Api 控制器操作执行跨域 POST 请求。 我总是收到以下错误:“XMLHttpRequest cannot load http://localhost:8082/app/users.No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://localhost:20724' is not allowed access. The response has HTTP status代码 500。” 奇怪的是,只有 POST 方法才会发生这种情况。其他方法工作正常(GET,PUT) 这是我的 API 配置(Startup.cs):
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);
我做错了什么??
更新
我已经解决了这个问题。尽管浏览器显示 CORS 错误,但我在 POST 方法上遇到内部错误。
【问题讨论】:
-
你在启动时添加了CORS配置吗? docs.asp.net/projects/mvc/en/latest/security/cors-policy.html
-
是的,我愿意。我的问题只是 POST 方法。其他人工作正常。
-
我看不出你的代码有什么问题。如果没有任何反应,我建议在 asp.net mvc github 页面 (github.com/aspnet/mvc/issues) 上开一张票
标签: c# angularjs asp.net-web-api cors asp.net-core-mvc