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

  • 相关阅读:
    Python-08-内置函数
    Python-07-高阶函数
    Python-06-函数
    Python-05-字符串格式化
    Python-04-数据结构
    Python-03-流程控制
    yum-config-manager命令找不到的解决方法
    Centos7 yum 出现could not retrieve mirrorlist 最终解决方案
    后台皮肤保存
    基于Docker的Mysql主从复制搭建
  • 原文地址:https://www.cnblogs.com/longdb/p/7722220.html
Copyright © 2011-2022 走看看