要解决WebApi的跨域问题,可以通过nuget引入microsoft.aspnet.webapi.cors包,然后在WebApiConfig启用跨域,代码如下: public static class WebApiConfig { public static void Register(HttpConfiguration config) { // 跨域
要解决WebApi的跨域问题,可以通过nuget引入microsoft.aspnet.webapi.cors包,然后在WebApiConfig启用跨域,代码如下:
public static class WebApiConfig { public static void Register(HttpConfiguration config) { // 跨域配置 config.EnableCors(new EnableCorsAttribute("*", "*", "*")); // Web API 路由 config.MapHttpAttributeRoutes(); config.Routes.MapHttpRoute( name: "DefaultApi", routeTemplate: "api/{controller}/{action}/{id}", defaults: new { id = RouteParameter.Optional } ); } }
附微软官方解决方案:https://docs.microsoft.com/en-us/aspnet/web-api/overview/security/enabling-cross-origin-requests-in-web-api#set-the-allowed-request-headers
还没完!
如果项目中使用了OWIN,那么以上配置对OWIN仍然无效,需要nuget引入Microsoft.Owin.Cors包,配置如下:
[assembly: OwinStartup(typeof(WanWei.LMS.WebApi.Startup))] namespace WanWei.LMS.WebApi { public partial class Startup { public void Configuration(IAppBuilder app) { // OWIN跨域 app.UseCors(CorsOptions.AllowAll); ConfigureAuth(app); } } }
且,通过OWIN跨域后就是整站跨域了,不在需要前面的microsoft.aspnet.webapi.cors包的配置。