对于纯ASP.NET MVC控制器
创建一个新属性
public class AllowCrossSiteJsonAttribute : ActionFilterAttribute{ public override void onActionExecuting(ActionExecutingContext filterContext) { filterContext.RequestContext.HttpContext.Response.AddHeader("Access-Control-Allow-Origin", "*"); base.onActionExecuting(filterContext); }}标记您的动作:
[AllowCrossSiteJson]public ActionResult YourMethod(){ return Json("Works better?");}对于ASP.NET Web API
using System;using System.Web.Http.Filters;public class AllowCrossSiteJsonAttribute : ActionFilterAttribute{ public override void onActionExecuted(HttpActionExecutedContext actionExecutedContext) { if (actionExecutedContext.Response != null) actionExecutedContext.Response.Headers.Add("Access-Control-Allow-Origin", "*"); base.onActionExecuted(actionExecutedContext); }}标记整个API控制器:
[AllowCrossSiteJson]public class ValuesController : ApiController{或单独的API调用:
[AllowCrossSiteJson]public IEnumerable<PartViewModel> Get(){ ...}对于Internet Explorer <= v9
IE <=9不支持CORS。我已经编写了一个Javascript,它将通过代理自动路由这些请求。所有这些都是100%透明的(您只需要包括我的代理和脚本即可)。
使用nuget下载它,
corsproxy并按照随附的说明进行操作。
博客文章 | 源代码



