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方法的参数类属性名完全一致