WebAPI 跨域解决方案.

先下载支持跨域的.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

原文地址:https://www.cnblogs.com/longdb/p/7722220.html