要解决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 }
);
}
}
还没完!
如果项目中使用了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包的配置。