前端ajax请求接口时,经常出现跨域问题,当然了解决方法有很多种,比如:
我本人恰好前后端都会一点,所以直接在接口端处理。 我用的是mvc 开发的接口 可以在web API 的根目录添加一个属性就OK了。 代码如下:
public class CrossSiteAttribute: System.Web.Http.Filters.ActionFilterAttribute
{
private string originHeaderdefault = "http://www.abc.com"; //默认的构造函数允许 "http://www.abc.com"域名下调用接口 public CrossSiteAttribute() { } public CrossSiteAttribute(string originHeader ) { if (!string.IsNullOrEmpty(originHeader)) { originHeaderdefault = originHeader; } } private const string Origin = "Origin"; ////// Access-Control-Allow-Origin是HTML5中定义的一种服务器端返回Response header,用来解决资源(比如字体)的跨域权限问题。 /// private const string AccessControlAllowOrigin = "Access-Control-Allow-Origin" ; ////// originHeaderdefault的值可以使 URL 或 *,如果是 URL 则只会允许来自该 URL 的请求,* 则允许任何域的请求 /// ////// 该方法允许api支持跨域调用 /// /// 初始化 System.Web.Http.Filters.HttpActionExecutedContext 类的新实例。 public override void OnActionExecuted( HttpActionExecutedContext actionExecutedContext) { actionExecutedContext.Response.Headers.Add(AccessControlAllowOrigin, originHeaderdefault); } }
### 调用很简单
[HttpPost] [CrossSite("http://www.bbb.com")] public Response RemovePC(Model model) { //你的代码 }
### 还有一种方式 ,就是直接在web.config里添加节点 的方式解决,就是在节点下添加。