C# WebApi CORS跨域问题解决方案

2020-01-05 09:23:21王冬梅


public class ChargingController : ApiController
  {
    /// <summary>
    /// 得到所有数据
    /// </summary>
    /// <returns>返回数据</returns>
    [HttpGet]
    public string GetAllChargingData()
    {
      return "Success";
    }
  }

配置WebApi的路由规则为通过action调用。WebApiConfig.cs文件


public static class WebApiConfig
  {
    public static void Register(HttpConfiguration config)
    {
      // Web API 路由
      config.MapHttpAttributeRoutes();

      config.Routes.MapHttpRoute(
        name: "DefaultApi",
        routeTemplate: "api/{controller}/{action}/{id}",
        defaults: new { id = RouteParameter.Optional }
      );
    }
  }

2、场景测试

1)我们不做任何的处理,直接将两个项目运行起来。看效果如何

IE浏览器:

C#,WebApi,CORS,跨域

谷歌浏览器:

C#,WebApi,CORS,跨域

这个结果另博主也很吃惊,不做任何跨域处理,IE10、IE11竟然可以直接请求数据成功,而同样的代码IE8、IE9、谷歌浏览器却不能跨域访问。此原因有待查找,应该是微软动了什么手脚。

2)使用CORS跨域