zoukankan      html  css  js  c++  java
  • WebAPI post 跨域调用及坑

    nuget中安装Microsoft ASP.NET Web API Cors相关的两个包
    EnableCors可以在方法 类上用EnableCorsAttibute设置
    也可以在WebApiConfig的Register方法中,直接config.EnableCors()

    IIS的设置,在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,OPTIONS"/>
    </customHeaders>
    </httpProtocol>

    WebAPI方法第一个参数使用[FromBody],post多个值,需要定义成一个对象,当成一个[FromBody]参数

    1.

    $(document).ready(function () {
    var ecParams = {
    "pID": 0,
    "eItemIDs": ["01", "42"],
    "startTime": "2016/01/10",
    "endTime": "2016/01/11"
    };
    var prm = JSON.stringify(ecParams);
    $.ajax(
    {
    //url: "http://xxx.xxx.xxx.xxx/xxxAPI/api/EItemDatas/getEItemData",
    url: "../api/EItemDatas/getEItemData",
    type: "post",
    dataType: "json",
    contentType: "application/json", 
    data: prm
    success: function (data) {
    alert(data);
    },
    error: function (XHR, text, err) {
    alert(text);
    }
    }
    );
    });

    2.

    $(document).ready(function () {
    var ecParams = {
    "pID": 0,
    "eItemIDs": ["01", "42"],
    "startTime": "2016/01/10",
    "endTime": "2016/01/11"
    };
    //var prm = JSON.stringify(ecParams);
    $.ajax(
    {
    url: "http://xxx.xxx.xxx.xxx/xxxAPI/api/EItemDatas/getEItemData",
    //url: "../api/EItemDatas/getEItemData",
    type: "post",
    dataType: "json",
    //contentType: "application/json", 
    data: ecParams,
    success: function (data) {
    alert(data);
    },
    error: function (XHR, text, err) {
    alert(text);
    }
    }
    );
    });


    如上两段代码,第1段可以正常使用
    第2段也可以正常使用,但是如果在第1段中调用跨域的接口会出现error,原因暂未知
    ecParams的各个key跟getEItemData方法的参数类属性名完全一致

  • 相关阅读:
    为mongoDB加用户权限管理
    手机号归属地查询接口
    关于微信小程序
    linux交互执行命令,expect
    apache配置跨域请求代理
    Linux(Mac)常用命令
    解决:配置虚拟主机,重启apache,[warn] _default_ VirtualHost overlap on port 80, the first has precedence
    linux下grep分析apache日志的命令集合
    解决Macbook Pro蓝牙不可用问题
    Apache如何开启Gzip压缩
  • 原文地址:https://www.cnblogs.com/fenix/p/5127984.html
Copyright © 2011-2022 走看看