【问题标题】:CORS not working with ASP NET 5 Web ApiCORS 不适用于 ASP NET 5 Web Api
【发布时间】: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 方法上遇到内部错误。

【问题讨论】:

标签: c# angularjs asp.net-web-api cors asp.net-core-mvc


【解决方案1】:

这就是我在工作的 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);
    }

【讨论】:

  • 抱歉,我需要配置 ASP NET 5 Web Api(新)。我的配置必须在 Startup.cs 类中
猜你喜欢
  • 2016-10-15
  • 2021-08-04
  • 2015-11-18
  • 2015-02-21
  • 2021-08-04
  • 2019-01-24
  • 2015-07-16
  • 2021-05-12
  • 1970-01-01
相关资源
最近更新 更多