CORS 不适用于 ASP NET 5 Web Api
Posted
技术标签:
【中文标题】CORS 不适用于 ASP NET 5 Web Api【英文标题】:CORS not working with 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 方法上遇到内部错误。
【问题讨论】:
你在启动时添加了CORS配置吗? docs.asp.net/projects/mvc/en/latest/security/cors-policy.html 是的,我愿意。我的问题只是 POST 方法。其他人工作正常。 我看不出你的代码有什么问题。如果没有任何反应,我建议在 asp.net mvc github 页面 (github.com/aspnet/mvc/issues) 上开一张票 【参考方案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 类中以上是关于CORS 不适用于 ASP NET 5 Web Api的主要内容,如果未能解决你的问题,请参考以下文章
ASP.NET Core CORS 配置不适用于 Firefox
通过 Web.config 启用 CORS 不适用于 .net WebApi