webapi跨域,服务器上使用session

最近的项目,要求前后端分离,手机客户端使用的是微信小程序,服务器接口,使用webapi接口分离,pc端后台管理也分离。

这里要说的是,后台pc管理端和服务器的API之间,使用session验证是否登录;后台客户端管理使用的是vue全家桶+axios

1.首先需要开启服务器端的session,需要在Global.asax文件中添加一下代码:

  public override void Init()
        {
            this.AuthenticateRequest += WebApiApplication_AuthenticateRequest;
            base.Init();
        }

        void WebApiApplication_AuthenticateRequest(object sender, EventArgs e)
        {
            //启用 webapi 支持session 会话
            HttpContext.Current.SetSessionStateBehavior(SessionStateBehavior.Required);
        }

需要重新Init方法

2.需要开通跨域,这里使用的是,Cors插件跨域,在NuGet中下载Microsoft.AspNet.WebApi.Core

然后在App_Start--->WebApiConfig.cs下添加如下代码:

 var geduCors = new EnableCorsAttribute(origins: "http://localhost:8080", headers: "*", methods: "*")
            {
                SupportsCredentials = true//设置跨域时,跨域带cookie,或者session
            };
            config.EnableCors(geduCors);

注意:要使用session,配置中的origins属性不能使用*,一定要写上你要跨域的域名。

3.在vue的main.js配置中,设置axios的属性:

axios.defaults.withCredentials =true;
若是用ajax原理也是一样的,要不然服务器端,session是获取不到的,OK,剩下的就可以在服务器端使用session了
原文地址:https://www.cnblogs.com/PiaoYu/p/11386230.html