码迷,mamicode.com
首页 > Windows程序 > 详细

使用筛选器特性标记方法解决webapi 跨域问题

时间:2018-01-10 23:45:03      阅读:261      评论:0      收藏:0      [点我收藏+]

标签:ros   namespace   override   pre   跨域问题   调用   efault   names   lib   

在我的之前随笔

中有人问到可以用特性来解决跨域问题吗,答案是肯定的,可以的;操作如下:

首先建一个类CrossSiteAttribute:从抽象 ActionFilterAttribute 类继承的特性类来创建操作筛选器或响应筛选器。然后重写方法 OnActionExecuted实现跨域

using System.Web.Http.Filters;

namespace Api
{
    public class CrossSiteAttribute : ActionFilterAttribute
    {
        private const string Origin = "Origin";
        private const string AccessControlAllowOrigin = "Access-Control-Allow-Origin";
        private const string originHeaderdefault = "*";
        public override void OnActionExecuted(HttpActionExecutedContext actionExecutedContext)
        {
            actionExecutedContext.Response.Headers.Add(AccessControlAllowOrigin, originHeaderdefault);
        }
    }
}

  最后在你的webapi方法中添加特性即可

        [CrossSite]
        [HttpPost]
        public string Add()
        {
            return "1" + "2";
        }

按照上述方法也是可以解决跨域问题的

 备注:

 OnActionExecuted 在执行操作方法后由 ASP.NET MVC 框架调用。

OnActionExecuting 在执行操作方法之前由 ASP.NET MVC 框架调用。

OnResultExecuted 在执行操作结果后由 ASP.NET MVC 框架调用。
OnResultExecuting 在执行操作结果之前由 ASP.NET MVC 框架调用。

 

参考链接: https://msdn.microsoft.com/zh-cn/library/system.web.mvc.actionfilterattribute(v=vs.108).aspx

使用筛选器特性标记方法解决webapi 跨域问题

标签:ros   namespace   override   pre   跨域问题   调用   efault   names   lib   

原文地址:https://www.cnblogs.com/highest/p/8261196.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!