zoukankan      html  css  js  c++  java
  • 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一站到底,加油

  • 相关阅读:
    js_浏览器对象模型BOM---通过对象来抽象浏览器功能
    js_dom 之事件注册、移除 、pageX
    js组成之dom_dom对象样式操作及运用
    js_组成之DOM_dom对象的注册事件及属性操作
    js_字符串、数组常用方法及应用
    js_内置对象Date Math
    Caffe入门学习(代码实践)
    char和uchar区别
    c/c++中过滤文件路经 后缀
    shell中$(( )) 、 $( ) 、${ }的区别
  • 原文地址:https://www.cnblogs.com/yuerdong/p/10021623.html
Copyright © 2011-2022 走看看