前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >ajax --- 解决ajax跨域请求导致session失效的问题

ajax --- 解决ajax跨域请求导致session失效的问题

作者头像
小蔚
发布2019-09-11 14:35:16
2.1K0
发布2019-09-11 14:35:16
举报
文章被收录于专栏:小蔚记录小蔚记录

起因:http是无状态的,因此我们通常需要用到cookie以及session来保存状态,session是在服务器端存储的,会和cookie一起使用,设置了session之后,会发送给浏览器一个cookie,这个cookie是session_id,当再次请求的时候浏览器会将它发送给服务器,以此来找到对应的session. 但是,我们实际使用的时候通常会用到跨域,就是向不同的域发起请求,但是默认情况下此时cookie是不会发送给服务器的,此时就导致了丢失session_id,从而导致了session的值为undefined。解决方案如下: 首先,前端页面发起ajax请求时,加上参数:

代码语言:javascript
复制
withCredentials: true,

像这样

代码语言:javascript
复制
$.ajax({
    type:
    url:'http://localhost:8080/user-login',
    data:
    dataType:'JSON',//注意哦,这一句要记得加上哦,我就是因为没加这句还查了好久的
    withCredentials: true,
    success:
    error:
})

我使用的后台语言是node.js,在node.js中使用cors跨域 在app.js中加上(注意接口的顺序哦):

代码语言:javascript
复制
app.all('*', function(req, res, next) {
    res.header("Access-Control-Allow-Origin", "这里填可以跨域访问的域,不能填*哦");
    res.header("Access-Control-Allow-Headers", "X-Requested-With");
    res.header("Access-Control-Allow-Methods","PUT,POST,GET,DELETE,OPTIONS");
    res.header("X-Powered-By",' 3.2.1');
    res.header("Access-Control-Allow-Credentials",true);
    res.header("Content-Type", "application/json;charset=utf-8");
    next();
});

  ok,和bug一站到底,加油

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018-11-26 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档