中文字幕精品亚洲无线码二区,国产黄a三级三级三级看三级,亚洲七七久久桃花影院,丰满少妇被猛烈进入,国产小视频在线观看网站

WebApi系列~開放(fang)的CORS,跨域資(zi)源訪問對所有(you)人開放(fang)

回到目錄

之前有(you)(you)(you)客戶問我(wo),如何AJAX跨域post,這個問題(ti)挺有(you)(you)(you)意思,在我(wo)們看來,我(wo)是(shi)(shi)不被(bei)(bei)允許的(de)(de),因為它(ta)是(shi)(shi)不安全的(de)(de),但(dan)隨著web api的(de)(de)火熱,這個東西也被(bei)(bei)人(ren)們一步步的(de)(de)接受了,確(que)實(shi),有(you)(you)(you)時,我(wo)們的(de)(de)接口希望對所有(you)(you)(you)人(ren)公開,它(ta)并不在乎有(you)(you)(you)人(ren)惡(e)意去POST灌(guan)數據,呵呵!

實現思(si)路(lu):向HTTP請求頭添加(jia)跨域(yu)標識Access-Control-Allow-Origin,將它的(de)值設為*即可(ke),當然如果你一個個頁(ye)面去加(jia)那就太麻煩了(le),也不推(tui)薦,有一天老總感覺這是不安全的(de)了(le),讓你去掉它,只(zhi)你可(ke)就麻煩大了(le),哈哈,所(suo)以,還有找個全局點吧!

開放的CORS過(guo)濾器,只對類開放,不支持方法(fa)單獨設置

    /// <summary>
    /// 開放(fang)cors協(xie)議,支持(chi)跨域訪(fang)問
    /// </summary>
    [AttributeUsage(AttributeTargets.Class, Inherited = true, AllowMultiple = false)]
    public class OpenCorsAttribute : ActionFilterAttribute
    {
        /// <summary>
        /// 開(kai)放cors協議,支持跨域訪問的初始化
        /// </summary>
        public OpenCorsAttribute()
        {
        }

        /// <summary>
        ///在action渲(xuan)染之前
        /// </summary>
        /// <param name="filterContext"></param>
        public override void OnActionExecuting(ActionExecutingContext filterContext)
        {

            var responseHead = filterContext.RequestContext.HttpContext.Response.Headers;
            if (responseHead != null)
            {
                responseHead.Add("Access-Control-Allow-Origin", "*");
            }
            base.OnActionExecuting(filterContext);


        }
    }

使用它也非常簡單

   [OpenCorsAttribute]
    public class HomeController : AsyncController
    {
 }

而如果希望所有(you)控制(zhi)器(qi)都添加這(zhe)個特性(xing),可以在(zai)FilterConfig類中去添加全局過濾器(qi)

 public static void RegisterGlobalFilters(GlobalFilterCollection filters)
        {
            filters.Add(new OpenCorsAttribute());
            filters.Add(new GlobalErrorAttribute());
            filters.Add(new HandleErrorAttribute());
            filters.Add(new UrlRuleFilterAttribute());
        }

這樣,你所有的Action也被破加上了這個特性,當然,如果你手動向Action上這是不被允許的,因為我們設置了AttributeUsage(AttributeTargets.Class),呵呵

程序截圖

 回到目錄

posted @ 2015-05-21 15:11  張占嶺  閱讀(3122)  評論(3)    收藏  舉報