C# CORS不使用ASP NET 5 Web Api
我正在尝试对ASP.NET 5 Web Api控制器操作执行跨域POST请求。 我总是收到以下错误:“XMLHttpRequest无法加载。请求的资源上不存在“访问控制允许源站”标头。因此不允许源站“”访问。响应的HTTP状态代码为500。” 奇怪的是,只有POST方法发生了这种情况。其他方法工作正常(GET、PUT) 这是我的API配置(Startup.cs): 以及控制器:C# CORS不使用ASP NET 5 Web Api,c#,angularjs,asp.net-web-api,cors,asp.net-core-mvc,C#,Angularjs,Asp.net Web Api,Cors,Asp.net Core Mvc,我正在尝试对ASP.NET 5 Web Api控制器操作执行跨域POST请求。 我总是收到以下错误:“XMLHttpRequest无法加载。请求的资源上不存在“访问控制允许源站”标头。因此不允许源站“”访问。响应的HTTP状态代码为500。” 奇怪的是,只有POST方法发生了这种情况。其他方法工作正常(GET、PUT) 这是我的API配置(Startup.cs): 以及控制器: [EnableCors("AllowAll")] [Route("app/[controller]")] public
[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方法上有一个内部错误。这是我在工作的Web Api中的错误。 这在App_Start=>WebApiConfig.cs文件中
public static void Register(HttpConfiguration config)
{
//this enables it by calling the that method defined below.
EnableCrossSiteRequests(config);
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
}
private static void EnableCrossSiteRequests(HttpConfiguration config)
{
var cors = new EnableCorsAttribute(
origins: "*",
headers: "*",
methods: "*");
config.EnableCors(cors);
}
您是否在启动时添加了CORS配置?是的,我喜欢。我的问题只是POST方法。其他的工作正常。我看不出你的代码有任何问题。如果什么都没有发生,我建议在asp.net mvc github页面()上打开一个票证抱歉,我需要asp.net 5 Web Api的配置(新)。我的配置必须在Startup.cs类中
public static void Register(HttpConfiguration config)
{
//this enables it by calling the that method defined below.
EnableCrossSiteRequests(config);
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
}
private static void EnableCrossSiteRequests(HttpConfiguration config)
{
var cors = new EnableCorsAttribute(
origins: "*",
headers: "*",
methods: "*");
config.EnableCors(cors);
}