先下载支持跨域的.dll,然后using System.Web.Http.Cors.
我把webapi解决方案部署到IIS上了.测试过后可以解决跨域.
方案一(用了*号,这样有安全隐患.):
直接在webapi解决方案中的控制器类上加上说明:
namespace WebApiDemo.Controllers { [EnableCors(origins: "http://localhost:8080/", headers: "*", methods: "GET,POST,PUT,DELETE")] public class WebApiTestController : ApiController { [HttpGet] public string GetString() { return "webapitest2222"; } } }
客户端调用:
jQuery.support.cors = true;//最好加上这个,说明JQuery支持跨域.这样就兼容了IE9以下版本. $(function () { $("#btnwebapi").click(function () { $.ajax({ url: 'http://localhost/webapiDemo/api/WebApiTest/getstring',//'/api/webapi/GetProduct', //data: JSON.stringify(model),//传给服务器的数据(即后台AddUsers()方法的参数,参数类型要一致才可以) type: 'get', contentType: 'application/json;charset=utf-8',//数据类型必须有 async: true,//异步 success: function (data) //成功后的回调方法 { alert(data)//弹出框 }, error: function (data) { alert("失败:" + data[0])//弹出框 } }); }) })
方案二:
先配置web.config
<configuration> <appSettings> <add key="cors_allowOrigins" value="*"/> <add key="cors_allowHeaders" value="*"/> <add key="cors_allowMethods" value="*"/> </appSettings>
.....
</configuration>
然后在APP_start文件夹下的单元中注册
public static void Register(HttpConfiguration config) { // Web API 配置和服务--跨域 var allowOrigins = ConfigurationManager.AppSettings["cors_allowOrigins"]; var allowHeaders = ConfigurationManager.AppSettings["cors_allowHeaders"]; var allowMethods = ConfigurationManager.AppSettings["cors_allowMethods"]; var globalCors = new EnableCorsAttribute(allowOrigins, allowHeaders, allowMethods); globalCors.SupportsCredentials = true; config.EnableCors(globalCors); // Web API 路由 config.MapHttpAttributeRoutes(); config.Routes.MapHttpRoute( name: "DefaultApi", routeTemplate: "api/{controller}/{id}", defaults: new { id = RouteParameter.Optional } ); }
参考 原文地址:http://www.cnblogs.com/moretry/p/4154479.html