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 相关文章推荐
js 鼠标拖动对象 可让任何div实现拖动效果
Nov 09 Javascript
Javascript 函数中的参数使用分析
Mar 27 Javascript
javascript 判断中文字符长度的函数代码
Aug 27 Javascript
浅析hasOwnProperty方法的应用
Nov 20 Javascript
javascript实现dom动态创建省市纵向列表菜单的方法
May 14 Javascript
js实现界面向原生界面发消息并跳转功能
Nov 22 Javascript
Javascript之深入浅出prototype
Feb 06 Javascript
vue实现的微信机器人聊天功能案例【附源码下载】
Feb 18 Javascript
js图片无缝滚动插件使用详解
May 26 Javascript
JavaScript实现的滚动公告特效【基于jQuery】
Jul 10 jQuery
Node.js API详解之 util模块用法实例分析
May 09 Javascript
Vue 事件的$event参数=事件的值案例
Jan 29 Vue.js
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
php 截取字符串并以零补齐str_pad() 函数
2011/05/07 PHP
php 获取今日、昨日、上周、本月的起始时间戳和结束时间戳的方法
2013/09/28 PHP
php 猴子摘桃的算法
2017/06/20 PHP
微信公众号开发之获取位置信息php代码
2018/06/13 PHP
php实现断点续传大文件示例代码
2020/06/19 PHP
文本框input聚焦失焦样式实现代码
2012/10/12 Javascript
Jquery 监视按键,按下回车键触发某方法的实现代码
2014/05/11 Javascript
JavaScript实现生成GUID(全局统一标识符)
2014/09/05 Javascript
浅谈Jquery为元素绑定事件
2015/04/27 Javascript
js模拟淘宝网的多级选择菜单实现方法
2015/08/18 Javascript
Bootstrap布局组件应用实例讲解
2016/02/17 Javascript
安装使用Mongoose配合Node.js操作MongoDB的基础教程
2016/03/01 Javascript
jQuery过滤选择器用法示例
2016/09/12 Javascript
xmlplus组件设计系列之路由(ViewStack)(7)
2017/05/02 Javascript
你应该知道的几类npm依赖包管理详解
2017/10/06 Javascript
详解Express笔记之动态渲染HTML(新手入坑)
2018/12/13 Javascript
微信小程序实现页面分享onShareAppMessage
2019/08/12 Javascript
从0搭建vue-cli4脚手架
2020/06/17 Javascript
微信小程序之滑动页面隐藏和显示组件功能的实现代码
2020/06/19 Javascript
Python中几个比较常见的名词解释
2015/07/04 Python
Python3多线程版TCP端口扫描器
2019/08/31 Python
40行Python代码实现天气预报和每日鸡汤推送功能
2020/02/27 Python
python批量替换文件名中的共同字符实例
2020/03/05 Python
python利用google翻译方法实例(翻译字幕文件)
2020/09/21 Python
今天学到的CSS最新技术(与图片背景相关)
2012/12/24 HTML / CSS
canvas实现高阶贝塞尔曲线(N阶贝塞尔曲线生成器)
2018/01/10 HTML / CSS
美国女士时尚珠宝及配饰购物网站:Icing
2018/07/02 全球购物
Hotter Shoes美国官网:英国最受欢迎的舒适鞋
2018/08/02 全球购物
日本航空官方网站:JAL
2019/06/19 全球购物
大学本科毕业生求职信范文
2013/12/18 职场文书
绿色学校实施方案
2014/03/31 职场文书
护士感人事迹
2014/05/01 职场文书
学习党章的体会
2014/11/07 职场文书
2015公务员年度考核评语
2015/03/25 职场文书
525心理健康活动总结
2015/05/08 职场文书
MySQL 数据库 增删查改、克隆、外键 等操作
2022/05/11 MySQL