在ASP.NETMVC中设置访问-控制-允许-原产地-最简单的可能方法我有一个简单的actionMethod,它返回一些json。它运行在ajax.example.com上。我需要从另一个网站访问这个网站。如果我试着叫它,我就会得到预期的.:Origin http://someothersite.com is not allowed by Access-Control-Allow-Origin.我知道有两种方法可以解决这个问题:JSONP并创建一个自定义HttpHandler若要设置标题,请执行以下操作。有没有更简单的方法?一个简单的操作不可能定义一个允许的起源列表,或者简单地允许每个人?也许是动作过滤器?最佳方案是:return json(mydata, JsonBehaviour.IDontCareWhoAccessesMe);
3 回答
富国沪深
TA贡献1790条经验 获得超9个赞
对于普通ASP.NETMVC控制器
创建一个新属性
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.NETWebAPI
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(){ ...}
对于InternetExplorer<=v9
corsproxy
- 3 回答
- 0 关注
- 423 浏览
添加回答
举报
0/150
提交
取消