Eggjs笔记:解决API接口跨域请求时cookie和session失效的问题

94 篇文章 5 订阅
60 篇文章 1 订阅

问题的出现

当我们打开浏览器访问,从一个页面跳转到另一个页面,session中的信息仍可以正常访问,为什么在请求API接口的时候, 一个接口可以访问到,另一个却无法访问到session中的信息了呢? 其实这个问题很简单,session是基于cookie的,浏览器可以在访问的时候通过cookie来确认用户权限,而接口API的直接访问是没有cookie等信息的, 这里涉及到一个cookie跨域的问题,所以无法获取session的信息,那如何在API接口中共享session信息呢?解决方案就是前端+后端的方式来支持API的跨域访问,下面我们具体来看下

问题的解决

后端配置

在跨域配置中新增credentials参数如下:

// 配置 跨域
config.cors = {
    origin: 'http://localhost:8080', // 这里的地址要配置具体的客户端地址,* 会有问题,另外:如果是App这种,内部使用的file协议,那么file请求接口是不会有跨域问题的
    credentials: true // 支持cookie跨域
};

前端配置

加入{credentials:true}参数

var api="http://127.0.0.1:7001/api/login"
this.$http.get(api,{credentials:true}).then((response)=>{
  console.log(response);
},(err)=>{
  console.log(err);

})

这里特别说明下:如果是jQuery的话,使用setup来做全局配置,如果是vue,react等需要封装一个拦截器,专门用来做全局配置,避免在单个接口中传递,上面只是举例

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Wang's Blog

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值