在ASP.NETMVC中設(shè)置訪問-控制-允許-原產(chǎn)地-最簡單的可能方法我有一個(gè)簡單的actionMethod,它返回一些json。它運(yùn)行在ajax.example.com上。我需要從另一個(gè)網(wǎng)站訪問這個(gè)網(wǎng)站。如果我試著叫它,我就會(huì)得到預(yù)期的.:Origin http://someothersite.com is not allowed by Access-Control-Allow-Origin.我知道有兩種方法可以解決這個(gè)問題:JSONP并創(chuàng)建一個(gè)自定義HttpHandler若要設(shè)置標(biāo)題,請執(zhí)行以下操作。有沒有更簡單的方法?一個(gè)簡單的操作不可能定義一個(gè)允許的起源列表,或者簡單地允許每個(gè)人?也許是動(dòng)作過濾器?最佳方案是:return json(mydata, JsonBehaviour.IDontCareWhoAccessesMe);
3 回答

撒科打諢
TA貢獻(xiàn)1934條經(jīng)驗(yàn) 獲得超2個(gè)贊
對(duì)于普通ASP.NETMVC控制器
創(chuàng)建一個(gè)新屬性
public class AllowCrossSiteJsonAttribute : ActionFilterAttribute{ public override void OnActionExecuting(ActionExecutingContext filterContext) { filterContext.RequestContext.HttpContext.Response.AddHeader("Access-Control-Allow-Origin", "*"); base.OnActionExecuting(filterContext); }}
標(biāo)記你的行動(dòng):
[AllowCrossSiteJson]public ActionResult YourMethod(){ return Json("Works better?");}
對(duì)于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); }}
標(biāo)記整個(gè)API控制器:
[AllowCrossSiteJson]public class ValuesController : ApiController{
或單個(gè)API調(diào)用:
[AllowCrossSiteJson]public IEnumerable<PartViewModel> Get(){ ...}
對(duì)于InternetExplorer<=v9
corsproxy
- 3 回答
- 0 關(guān)注
- 567 瀏覽
添加回答
舉報(bào)
0/150
提交
取消