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 相关文章推荐
Javascript 篱式条件判断
Aug 22 Javascript
一个简单的JavaScript 日期计算算法
Sep 11 Javascript
JS代码优化技巧之通俗版(减少js体积)
Dec 23 Javascript
JS网页图片按比例自适应缩放实现方法
Jan 15 Javascript
取得元素的左和上偏移量的方法
Sep 17 Javascript
jquery实现表单验证简单实例演示
Nov 23 Javascript
jquery ztree实现模糊搜索功能
Feb 25 Javascript
jquery 正整数数字校验正则表达式
Jan 10 Javascript
web打印小结
Jan 11 Javascript
详解Vue.js组件可复用性的混合(mixin)方式和自定义指令
Sep 06 Javascript
Vue源码探究之状态初始化
Nov 14 Javascript
Taro UI框架开发小程序实现左滑喜欢右滑不喜欢效果的示例代码
May 18 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
屏蔽浏览器缓存另类方法
2006/10/09 PHP
将二维数组转为一维数组的2种方法
2014/05/26 PHP
php实现数组中索引关联数据转换成json对象的方法
2015/07/08 PHP
php metaphone()函数及php localeconv() 函数实例解析
2016/05/15 PHP
图片自动缩小的js代码,用以防止图片撑破页面
2007/03/12 Javascript
javascript iframe中打开文件,并检测iframe存在否
2008/12/28 Javascript
javascript 跳转代码集合
2009/12/03 Javascript
jQuery 版元素拖拽原型代码
2011/04/25 Javascript
jquery 插件学习(二)
2012/08/06 Javascript
js中substring和substr的详细介绍与用法
2013/08/29 Javascript
js判断客户端是iOS还是Android等移动终端的方法
2013/12/11 Javascript
利用js制作html table分页示例(js实现分页)
2014/04/25 Javascript
纯js代码制作的网页时钟特效【附实例】
2016/03/30 Javascript
JavaScript字符串_动力节点Java学院整理
2017/06/27 Javascript
Node.js 多线程完全指南总结
2019/03/27 Javascript
js实现烟花特效
2020/03/02 Javascript
JS使用for in有序获取对象数据
2020/05/19 Javascript
python检测服务器是否正常
2014/02/16 Python
Python中使用PDB库调试程序
2015/04/05 Python
pyhton列表转换为数组的实例
2018/04/04 Python
Linux下python3.7.0安装教程
2018/07/30 Python
Python sorted函数详解(高级篇)
2018/09/18 Python
基于Python中的yield表达式介绍
2019/11/19 Python
关于Python Tkinter Button控件command传参问题的解决方式
2020/03/04 Python
pandas数据选取:df[] df.loc[] df.iloc[] df.ix[] df.at[] df.iat[]
2020/04/24 Python
HTML5中FileReader接口使用方法实例详解
2017/08/26 HTML / CSS
html2canvas截图空白问题的解决
2020/03/24 HTML / CSS
《草原》教学反思
2014/02/15 职场文书
党的生日活动方案
2014/08/15 职场文书
2014基层党员批评与自我批评范文
2014/09/24 职场文书
学校班子个人对照检查材料思想汇报
2014/09/27 职场文书
加强干部作风建设整改方案
2014/10/24 职场文书
论文答谢词
2015/01/20 职场文书
龙潭大峡谷导游词
2015/02/10 职场文书
音乐剧猫观后感
2015/06/04 职场文书
Java8 Stream API 提供了一种高效且易于使用的处理数据的方式
2022/04/13 Java/Android