1,建立MVC WEBAPI项目后,需要对项目安装System.Web.Http.Cors
在VS工具栏目下NuGet包管理工具里,点击打开,然后在窗口浏览处输入 Microsoft.AspNet.WebApi.Cors 选择对应栏目和项目进行安装
2.安装完毕后再WebApiConfig.js类中手动添加引用 using System.Web.Http.Cors;
在Web API 配置和服务中增加
// 将 Web API 配置为仅使用不记名令牌身份验证。
//跨域配置
**config.EnableCors(new EnableCorsAttribute("*", "*", "*"));****
完整代码
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web.Http;
using System.Web.Http.Cors;
namespace SXGJJSTJAPI
{
public static class WebApiConfig
{
public static void Register(HttpConfiguration config)
{
// Web API 配置和服务
//跨域配置
config.EnableCors(new EnableCorsAttribute("*", "*", "*"));
// Web API 路由
config.MapHttpAttributeRoutes();
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
}
}
}
3.在项目Controllers文件下对应的API触发器同样增加引用 using System.Web.Http.Cors;
在触发器头部生命跨域方式 EnableCors("", "", “*”)
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Net.Http;
using System.Web.Http;
using System.Web.Http.Cors;
namespace SXGJJSTJAPI.Controllers
{
[Authorize]
[RoutePrefix("api/STY")]//路由
[EnableCors("*", "*", "*")]//跨域配置
public class ValuesController : ApiController
{
// GET api/values
public IEnumerable<string> Get()
{
return new string[] { "value1", "value2" };
}
}
}
注意事项
EnableCors共三个参数分别为origins、headers和methods。origins配置允许访问的域名,多个域名以逗号分隔即可,域名一定要完整,如果是ip地址前面要加上“http”,只使用IP的话一定会失效的。参数headers配置所支持的资源。参数methods配置支持的方法,get、post、put等。如果允许任意域名、任意资源、任意方法访问自己的webapi,则三个参数全部使用星号”*”即可。
还有一种方式是在WebApiConfig.js 跨域配置中利用Web.config进行配置可访问的域名或者IP地址,读取config文件然后根据文件配置的信息进行配置,原理相同。
<add key="origins" value="https://baidu.com:9012,http://192.168.101.67:9012" />
var cors = new EnableCorsAttribute(ConfigurationManager.AppSettings["origins"], "*", "*");
config.EnableCors(cors);