zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    [转]使用.NET中的XML注释(一) XML注释标签讲解
    Cookie文件格式
    [转]去掉网页上链接或按钮的虚线框
    [转]TFS提供修改密码的页面
    [转]动态操作Stylesheet里的rule
    模拟TcpClient的Timeout
    [转]使用.NET中的XML注释(二) 创建帮助文档入门篇
    【转】PowerPoint 2007与微软拼音输入法的问题
    [转]BloomFilter——大规模数据处理利器
    关于费马小定理与欧拉定理的关系
  • 原文地址:https://www.cnblogs.com/longdb/p/7722220.html
Copyright © 2011-2022 走看看