0

我最近阅读了这段代码,它使 MVC Web API 允许 CORS(跨源资源共享)。我知道这ActionFilterAtrribute使它成为一个过滤器,但我不确定这堂课发生了什么:AllowCORS.

public class AllowCORS : ActionFilterAttribute
{
    public override void OnActionExecuting(ActionExecutingContext filterContext)
    {
        if(filterContext.HttpContext.Request.HttpMethod == "OPTIONS")
        {
            filterContext.Result = new EmptyResult();
        }
        else
        {
            base.OnActionExecuting(filterContext);
        }
    }
}

所以基本上,如果我们收到的请求方法是 aHttpOPTIONS我们会做一些我在这种情况下不太理解的事情。否则,我们会做一些我也不确定的事情吗?

有人会提供帮助和详细说明吗,这里到底发生了什么?

4

1 回答 1

1

ActionFilterAttribute类中,在执行放置属性OnActionExecuting的控制器操作之前执行。ActionFilterAttribute

如果您覆盖OnActionExecuting函数,它允许您在执行控制器操作之前执行任何特定代码。在你的情况下:

if(filterContext.HttpContext.Request.HttpMethod == "OPTIONS")
{
    filterContext.Result = new EmptyResult();
}

如果请求HttpOPTIONS在控制器操作执行之前,代码将向客户端返回一个空响应。

如果请求是其他类型的:

else
{
    base.OnActionExecuting(filterContext);
}

它将允许控制器操作执行并向客户端返回响应。

于 2015-11-06T10:37:57.037 回答