webapi跨域,服务器上使用session

Posted piaoyu

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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了

以上是关于webapi跨域,服务器上使用session的主要内容,如果未能解决你的问题,请参考以下文章

解决session跨域共享问题

跨域 WebAPI 批量请求

thinkphp中session跨域问题

WebAPI跨域设置

AJAX跨域调用ASP.NET MVC或者WebAPI服务的解决方案

处理session跨服务器跨域失效问题