Web Api 利用 cors 实现跨域

一.安装 cors

二.修改 Web.config

  <appSettings>
    <add key="cors:allowedMethods" value="*"/>
    <add key="cors:allowedOrigin" value="http://localhost:42021"/>
    <add key="cors:allowedHeaders" value="*"/>    
  </appSettings>  

(如果想允许所有请求, 则都设置为 "*")

三.修改 WebApiConfig.cs , 增加如下代码

        public static void Register(HttpConfiguration config)
        {
            // Web API 配置和服务


            //跨域配置
            var allowedMethods = ConfigurationManager.AppSettings["cors:allowedMethods"];
            var allowedOrigin = ConfigurationManager.AppSettings["cors:allowedOrigin"];
            var allowedHeaders = ConfigurationManager.AppSettings["cors:allowedHeaders"];

            config.EnableCors(new EnableCorsAttribute(allowedOrigin, allowedHeaders, allowedMethods)
            {
                SupportsCredentials = true
            });

......

 

测试结果:

   

 

当然,也可以设置只让某一些api允许跨域:

 

       [HttpGet]
        [HttpPost]
        [Route("order/pager")]
        [EnableCors(origins:"http://localhost:27593",headers:"*",methods:"*")]
        public IHttpActionResult Pager([FromUri]Person p)
        {
            return Json(p);
        }

并且,这种设置也遵循就近原则:

如果像上面那样设置后,27593 则能够通过访问该接口获取到数据,而 42021 则不行 .

如果不想有什么限制,允许所有访问跨域,则可以只在 WebApiConfig.cs 中添加如下代码即可:

 config.EnableCors(new EnableCorsAttribute("*", "*", "*"));

 

posted @ 2018-01-28 18:23  热敷哥  阅读(289)  评论(0编辑  收藏  举报