WebApi跨域实现

要解决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包的配置。

原文地址:https://www.cnblogs.com/yingcheng/p/11662686.html