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

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

withCredentials: true,

像这样

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

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

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一站到底,加油

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏自译文章/自学记录

Prototypal inheritance原型继承(实用篇)

本文侧重于如何应用prototype inheritance,想了解基本概念的可以查看基础概念篇。 在programing时,我们总是想从已有的事物中继承并扩...

7130
来自专栏自译文章/自学记录

JavaScript Scoping and Hoisting

当然,上面的代码会让浏览器弹出“1”。那么这中间究竟发生了什么?虽然这看起来似乎让人感到陌生,危险,困惑,但是这就是JavaScript语言的强大并富有表现力的...

7320
来自专栏自译文章/自学记录

理解JavaScript中的Loose Typing(弱类型)

对于大多数前端开发者来说,JavaScript是他们第一次到的既是脚本又是解释语言。对这些开发者来说,loosely typed variables的概念和暗示...

11230
来自专栏前端自习课

【JS】328- 8个你不知道的DOM功能

最近一直在关注工具,从 React 和 npm-install-everything 中休息一下,看看一些原生的 DOM 和 Web API 的功能,他们可以在...

8510
来自专栏自译文章/自学记录

解释JavaScript中的闭包

去年我写了一篇“closures的简介”,它的目的是帮助大家理解‘什么是闭包,闭包是如何工作的’。现在我尝试从另外一个不同的角度去阐释闭包。有了这些基本的概念,...

10220
来自专栏自译文章/自学记录

Prototypal Inheritance with Javascript-JavaScript中的原型继承(基础概念篇)

因为上篇文章Prototypal Inheritance没有对一些基本概念作出阐述,所以加入这篇文章作为补充。

5820
来自专栏跨平台全栈俱乐部

9102年,隔壁公司新来的女实习生问我什么是TypeScript ?

所谓的超集 其实就是最终将你写的TypeScript编译成javascript去执行,因为浏览器上能跑的脚本语言是javascript,这个本质要搞清楚

10020
来自专栏web前端教室

【免费视频教程】NuxtJs框架-安装与介绍

16430
来自专栏自译文章/自学记录

Immediately-Invoked Function Expression (IIFE)即调函数表达式

以防你没有注意到,我先声明下:我总是要求术语。所以,在听到许多次 流行的,但是让人误解的 JavaScript术语“self-executing anonymo...

7720
来自专栏自译文章/自学记录

Functions在JavaScript中是作为 first class objects存在的

Functions在JavaScript中是作为 'first class objects' 存在的。这意味着JS中的functions是一种特殊类型的obje...

6020

扫码关注云+社区

领取腾讯云代金券

年度创作总结 领取年终奖励