首先,在服务端WebAPI的Controller中添加允许跨域请求的特性:
[EnableCors(origins: "*", headers: "*", methods: "*")]
public class MyApiController : ApiController
{
//...
}
其中,origins: "*"
表示任何来源的跨域请求都可允许访问;headers: "*"
表示允许请求中携带的任意头信息;methods: "*"
表示允许任意HTTP方法的请求。
接着,在客户端的JS代码中使用jQuery的ajax方法发起跨域请求:
$.ajax({
url: "http://yourapi.com/api/MyApi",
type: "GET",
crossDomain: true,
success: function (response) {
//处理成功返回的数据
},
error: function (xhr, status) {
//处理请求出错的情况
}
});
其中,crossDomain: true
表示允许跨域请求。当然,具体的请求方式、参数等需要根据实际情况进行设置。
在我们的项目中,如果需要通过Ajax跨域请求WebAPI,可以采取以下步骤:
- 在WebAPI的响应头中添加跨域访问的允许策略,可以使用以下代码:
HttpResponseMessage response = new HttpResponseMessage(HttpStatusCode.OK);
response.Headers.Add("Access-Control-Allow-Origin", "*");
response.Headers.Add("Access-Control-Allow-Methods", "POST, GET, OPTIONS");
response.Headers.Add("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept");
- 在Ajax请求中设置跨域访问的参数,可以使用以下代码:
$.ajax({
type: "POST",
url: "http://example.com/api/action",
crossDomain: true,
dataType: 'json',
data: {'param1': 'value1', 'param2': 'value2'},
success: function(data) {
console.log(data);
},
error: function(xhr, status, error) {
console.log(error);
}
});
其中,crossDomain设置为true表示允许跨域访问。需要注意的是,如果在IE9以下版本中使用Ajax跨域请求WebAPI,需要使用XDomainRequest对象来实现。
发布者:luotuoemo,转转请注明出处:https://www.jintuiyun.com/158141.html