zoukankan      html  css  js  c++  java
  • 调用 Webapi 跨域

    先讲一下,web和client各自调用webapi的post和get实例

    Get方式

    [HttpGet]
            public dynamic Test(string a)
            {
                return a+"---";
            }

    web调用

    $.ajax({
                    type: "Get",
                    url: '../api/MyController/Test',
                    dataType: "json",
    data:"123",
                    success: function (d) {
    }
    })

    Client调用

    static async void APIGet(string url)
            {
                //创建HttpClient(注意传入HttpClientHandler)
                var handler = new HttpClientHandler() { AutomaticDecompression = DecompressionMethods.GZip };
    
                using (var http = new HttpClient(handler))
                {
                    //await异步等待回应
                    var response = await http.GetAsync(url);
                    //确保HTTP成功状态值
                    response.EnsureSuccessStatusCode();
    
                    //await异步读取最后的JSON(注意此时gzip已经被自动解压缩了,因为上面的AutomaticDecompression = DecompressionMethods.GZip)
                    Console.WriteLine(await response.Content.ReadAsStringAsync());
                }
            }




    Post方式

    [HttpPost]
            public dynamic Test([FromBody]string data)
            {
                return data+"---";
            }

    web调用

    var data = { "": "123" };
    $.ajax({
                        type: "Post",
                        url: "../api/MyController/Test",
                        dataType: "json",
                        data: data,
                        success: function (d) {
                            
                        }
                    });

    client调用

    public static async Task<string> APIPost(string url, string data)
            {
                string result = string.Empty;
                var handler = new HttpClientHandler() { AutomaticDecompression = DecompressionMethods.GZip };
                using (var http = new HttpClient(handler))
                {
                    var content = new FormUrlEncodedContent(new Dictionary<string, string>()       
                    {
                      {"", data}//键名必须为空
                     });
    
                    var response = await http.PostAsync(url, content);
                    response.EnsureSuccessStatusCode();
                    result = await response.Content.ReadAsStringAsync();
                }
                return result;
            }


    方法1  配置web.config

    对于跨域,比较简单的是配置web.config
    <system.webServer> 节点下配置:

    <httpProtocol>
          <customHeaders>
            <add name="Access-Control-Allow-Origin" value="*" />
            <add name="Access-Control-Allow-Headers" value="*" />
            <add name="Access-Control-Allow-Methods" value="GET, POST, PUT, DELETE" />
          </customHeaders>
        </httpProtocol>


    方法2  设置 CORS

    http://www.cnblogs.com/landeanfen/p/5177176.html





  • 相关阅读:
    网络流二十四题之魔术球问题
    网络流二十四题之P2764 最小路径覆盖问题
    网络二十四题 之 P2756 飞行员配对方案问题
    网络流 之 dinic算法
    网络流 之 增广路
    中南
    2249: Altruistic Amphibians 01背包的应用 + lh的简单图论 图转树求lca
    今日训练 搜索
    AD-logon workstation
    Centos7-docker安装
  • 原文地址:https://www.cnblogs.com/hanjun0612/p/9779885.html
Copyright © 2011-2022 走看看