一、Get请求
1. 前端代码
$.ajax({
type: "get",
async: false,
url: 'http://127.0.0.1:10801/api/CrossDomain', // 1
dataType: "jsonp",
jsonp: "callbackparam",//传递给请求处理程序或页面的,用以获得jsonp回调函数名的参数名(默认为:callback)
jsonpCallback: "myCallbackFunction",//自定义的jsonp回调函数名称,默认为jQuery自动生成的随机函数名
success: function (json) {
alert('JsonP_OK');
alert(json);
},
error: function () {
alert('JsonP_Fail');
}
});
2. 后端代码
/// <summary>
/// 跨域接口测试
/// </summary>
[Route("api/[controller]")]
[ApiController]
public class CrossDomainController : ControllerBase
{
[HttpGet]
public string Get()
{
CrossDomainModel model = new CrossDomainModel();
model.Name = "Yxx";
model.Sex = "M";
string res = JsonConvert.SerializeObject(model);
res = $"myCallbackFunction({res});";
//string res = "myCallbackFunction({\"id\":1,\"name\":\"C#\",\"is_familiar\":true});";
return res;
}
}
二、Post请求
1. 前端代码
var obj = {
"SFC":"SFC001",
"FactoryName":"A801",
"MaterialCode":"BCL001",
"MaterialName":"中文描述"
};
$.ajax({
type: "post",
async: false,
url: 'http://127.0.0.1:10801/api/CrossDomain', // 1
data : JSON.stringify(obj),
contentType: "application/json;charset=utf-8",
dataType: "text",
success: function (json) {
var resultObj = JSON.parse(json);
},
error: function () {
alert('JsonP_Fail');
}
});
2. 后端代码
2.1 接口代码
/// <summary>
/// 跨域接口测试
/// </summary>
[Route("api/[controller]")]
[ApiController]
public class CrossDomainController : ControllerBase
{
[HttpPost]
[EnableCors("any")]
public string Post(PrintInfoModel param)
{
return JsonConvert.SerializeObject(param);
}
}
2.2 Startup.cs代码
//添加cors 服务 配置跨域处理
services.AddCors(options =>
{
options.AddPolicy("any", builder =>
{
builder.AllowAnyOrigin() //允许任何来源的主机访问
.AllowAnyMethod()
.AllowAnyHeader();
//.AllowCredentials();//指定处理cookie
});
});
//配置Cors
app.UseCors("any");
注意: app.UseCors(“any”); 要写在app.UseAuthorization(); 后面,否则会报错。
总结
前端页面跨域调用