.NET处理VUE Option请求问题

拟墨画扇 提交于 2020-03-03 10:28:15

       最近做了一个前后端分离的项目,后台用的.NET MVC写的接口,前台用的VUE。出现了一个问题,就是在后台获取Header Token的时候,怎么也获取不到,后来发现VUE前端在请求的时候,先发送了一个OPTIONS请求,也就是大家说的预请求,这个请求是获取不到Header里边的内容,如果OPTIONS请求不能正常处理,那么后边真正的POST的请求也不会再进行,所以只有这个OPTIONS请求通过之后,才能处理真正的POST请求,但是Option请求和POST请求,都是访问的同一个接口地址,怎么区分处理呢?目前我是在OnActionExecuting方法里做的处理。

protected override void OnActionExecuting(ActionExecutingContext filterContext)
{
    //对OPTIONS请求做处理
    if (Request.HttpMethod == "OPTIONS")
    {
        JsonResult jsResult = new JsonResult();               
        filterContext.HttpContext.Response.AddHeader("Access-Control-Allow-Headers", "token");                
        filterContext.Result = jsResult;
    }
    else
    {
        //其他正常处理代码
    }            
}      

       在处理的时候加了一个"Access-Control-Allow-Headers",“token”,如果OPTIONS请求没有返回这个自定义Header内容,那么预请求的结果就是不允许传自定义Header,那么后边的POST请求也不会拿到数据,所以加了一个这个东西。

       目前我是这么想也是这么处理的,欢迎讨论指正。

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!