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

  • 相关阅读:
    MAC配置DNS服务器
    真机IOS8.3以上的文件夹共享
    appium + python的环境配置_windows
    python 的时间与日期
    sublimetext 2 编译文件带input时 提示 EOFError: EOF when reading a line
    cmd无法输入中文解决方案
    配置python学习环境遇到的问题:[Decode error
    monkey初接触
    Android logcat输出中文乱码
    运行 命令框不记录打过的命令,重启后CMD里面是空的.上次打过的命令消失了.
  • 原文地址:https://www.cnblogs.com/longdb/p/7722220.html
Copyright © 2011-2022 走看看