在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 關注
- 455 瀏覽
添加回答
舉報
0/150
提交
取消