express如何解决ajax跨域访问session失效问题详解


Posted in Javascript onJune 20, 2019

前言

最近在学习express,就用以前做的项目来进行express前后端分离的练手了,在做登陆注册的时候发现跨域的时候,session的值是会失效的,导致session里面的数据获取为undefined,网上找资料加上自己的不断尝试,终于找到了解决方法,简单记录一下解决方法。

解决方法

1、客户端因为session原则上是需要cookie支持的,所以Ajax方法里面必须添加 xhrFields:{withCredentials:true},表示允许带Cookie的跨域Ajax请求( 特别说明,只要使用的session都得加这句)

$('#login').click(function () {
  $.ajax({
   url: 'http://localhost:3000/users/yzm',//服务端路由地址
   type: 'get',
   xhrFields:{withCredentials:true},
   dataType: 'json',
   success:function(data){
    $('#yzm_img').html(data)
   },
   error:function(){
    alert('error');
   }
  });
 });
 $('#form_login').submit(function (e) {/!*登录*!/
  e.preventDefault();/!*阻止表单默认事件,页面全局刷新*!/
  var data=$('#form_login').serialize();/!*将表单里的数据包装起来*!/
  $.ajax({
   url : 'http://localhost:3000/users/login',
   type : "post",
   data : data,
   xhrFields:{withCredentials:true},
   dataType:'json',
   success:function(msg) {
    alert("这是返回的数据"+msg);
   },
   error:function(err){
    alert("这是失败的信息"+err);
   }
  });
 });

通过设置 withCredentials: true ,发送Ajax时,Request header中便会带上 Cookie 信息。

2、服务器端修改app.js文件

相应的,对于客户端的参数,服务器端也需要进行设置。

对应客户端的 xhrFields.withCredentials: true 参数,服务器端通过在响应 header 中设置 Access-Control-Allow-Credentials = true 来运行客户端携带证书式访问。通过对 Credentials 参数的设置,就可以保持跨域 Ajax 时的 Cookie。

var express = require('express');
var session = require('express-session');/*引入会话变量*/

var app = express();
app.all('*', function(req, res, next) {
 res.header("Access-Control-Allow-Origin", "http://localhost:63342");//前端域名
 res.header("Access-Control-Allow-Credentials",'true');
 res.header("Access-Control-Allow-Methods","PUT,POST,GET,DELETE,OPTIONS");
 next();
});

特别注意:服务器端 Access-Control-Allow-Credentials = true时,参数Access-Control-Allow-Origin 的值不能为 '*' ,必须为自己客户端项目所在地址。

3、服务器中使用session

router.get('/yzm', function(req, res, next) {
 req.session.yzm='abcd';
}
router.post('/login', function(req, res, next) {
 console.log(req.session.yzm);
}

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对三水点靠木的支持。

Javascript 相关文章推荐
定义select的边框颜色
Apr 28 Javascript
JQuery调用绑定click事件的3种写法
Mar 28 Javascript
Javascript点击其他任意地方隐藏关闭DIV实例
Jun 21 Javascript
几种二级联动案例(jQuery\Array\Ajax php)
Aug 13 Javascript
巧用Javascript的逻辑运算符
Dec 02 Javascript
js实现数组和对象的深浅拷贝
Sep 30 Javascript
基于vue实现分页效果
Nov 06 Javascript
vue后台管理之动态加载路由的方法
Aug 13 Javascript
Vuejs监听vuex中值的变化的方法示例
Dec 02 Javascript
玩转Koa之koa-router原理解析
Dec 29 Javascript
vue项目前端微信JSAPI与外部H5支付相关实现过程及常见问题
Apr 14 Javascript
Vue-cli打包后部署到子目录下的路径问题说明
Sep 02 Javascript
JS去除字符串最后的逗号实例分析【四种方法】
Jun 20 #Javascript
如何在微信小程序中实现Mixins方案
Jun 20 #Javascript
js JSON.stringify()基础详解
Jun 19 #Javascript
使用jquery-easyui的布局layout写后台管理页面的代码详解
Jun 19 #jQuery
Vue-Cli 3.0 中配置高德地图的两种方式
Jun 19 #Javascript
vue axios重复点击取消上一次请求封装的方法
Jun 19 #Javascript
javascript创建元素和删除元素实例小结
Jun 19 #Javascript
You might like
理解PHP5中static和const关键字的区别
2007/03/19 PHP
PHP多个版本的分析解释
2011/07/21 PHP
PHP 获取文件权限函数介绍
2013/07/11 PHP
解析PHP中的unset究竟会不会释放内存
2013/07/18 PHP
保存到桌面、设为桌面且带图标的PHP代码
2013/11/19 PHP
php缓冲 output_buffering和ob_start使用介绍
2014/01/30 PHP
PHP+sqlite数据库操作示例(创建/打开/插入/检索)
2016/05/26 PHP
确保Laravel网站不会被嵌入到其他站点中的方法
2019/10/18 PHP
新手入门常用代码集锦
2007/01/11 Javascript
javascript写的一个链表实现代码
2009/10/25 Javascript
基于jQuery UI CSS Framework开发Widget的经验
2010/08/21 Javascript
javascript轻松实现当鼠标移开时已弹出子菜单自动消失
2013/12/29 Javascript
JavaScript中的lastIndexOf()方法使用详解
2015/06/06 Javascript
jquery中键盘事件小结
2016/02/24 Javascript
纯JS前端实现分页代码
2016/06/21 Javascript
JS中split()用法(将字符串按指定符号分割成数组)
2016/10/24 Javascript
Mint UI 基于 Vue.js 移动端组件库
2017/11/07 Javascript
vue中设置height:100%无效的问题及解决方法
2018/07/27 Javascript
Vuex modules模式下mapState/mapMutations的操作实例
2019/10/17 Javascript
原生JS与JQ获取元素的区别详解
2020/02/13 Javascript
Python使用PIL库实现验证码图片的方法
2016/03/11 Python
利用Python将时间或时间间隔转为ISO 8601格式方法示例
2017/09/05 Python
django 解决manage.py migrate无效的问题
2018/05/27 Python
Python3.6基于正则实现的计算器示例【无优化简单注释版】
2018/06/14 Python
pandas删除指定行详解
2019/04/04 Python
html5教程实现Photoshop渐变色效果
2013/12/04 HTML / CSS
师范应届生教师求职信
2013/11/05 职场文书
中医专业应届生求职信
2013/11/17 职场文书
文明家庭先进事迹材
2014/01/27 职场文书
2014庆六一活动方案
2014/03/02 职场文书
社区创先争优承诺书
2014/08/30 职场文书
党员教师个人对照检查材料范文
2014/09/25 职场文书
安全保证书格式
2015/02/28 职场文书
2015社区健康教育工作总结
2015/05/20 职场文书
2016七夕情人节寄语
2015/12/04 职场文书
js前端面试常见浏览器缓存强缓存及协商缓存实例
2022/06/21 Javascript