WebApi中跨域请求的解决方案和原理
跨域请求仅发生在JavaScript发起Ajax请求时,浏览器对请求的限制,通常只允许访问同一个域中的资源,或者目标服务器明确的通知浏览器允许该域访问资源。
那么什么叫跨域的:主机地址或者ip地址或者域名,端口号,http协议或者https协议中有一种不相同的时候就是跨域。
使用Cors来解决跨域的问题
第一步在WebApi中使用Nuget引入包
Microsoft.AspNet.WebApi.Cors
第二部需要在App_Start的WebApiConfig文件中配置允许跨域的Origins、Headers,Methods。如果配置允许所有的域都可以访问资源可以使用*,但是这种访问设置的安全性不容忽视。
1 public static class WebApiConfig 2 { 3 public static void Register(HttpConfiguration config) 4 { 5 // Web API 配置和服务 6 config.EnableCors(new EnableCorsAttribute("http://localhost:51144,http://localhost:65024", "*", "*")); 7 //config.EnableCors(new EnableCorsAttribute("*", "*", "*")); 8 // Web API 路由 9 config.MapHttpAttributeRoutes(); 10 11 config.Routes.MapHttpRoute( 12 name: "DefaultApi", 13 routeTemplate: "api/{controller}/{id}", 14 defaults: new { id = RouteParameter.Optional } 15 ); 16 } 17 }