我是靠谱客的博主 唠叨母鸡,最近开发中收集的这篇文章主要介绍cookie session的设置一、cookie  二、sessionsession比cookie的不同之处,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

一、cookie  

cookie是一门客户端的技术,因为cookie是存储在客户端浏览器中的。由于http协议是无状态的.传统服务器只能被动响应请求.当服务器获取到请求,并为了能够区分每一个客户端,需要客户端发送请求时发送一个标志符(cookie)。

前端设置:

1、需要设置允许跨域携带凭证

axios请求的get请求和post请求不一样,但是凭证是一样的

axios.post(url,dataObj,{withCredentials: true })
axios.get(url,{params:dataObj, withCredentials: true })

2、设置cookie对象里面的值

       maxAge: 设置cookie的有效期,单位毫秒,默认浏览器关闭消失;

       httpOnly:设置cookie是否允许js访问,默认true,不允许;

       overwrite:如果设置为true,相同的键值对会被覆盖,否则发送两个;

       signed:如果为true表示对cookie进行签名,不是加密,只是防止被篡改,注意在获取的时候也要提供该设置进行匹配;

       encrpty:是否加密,true加密后客户端看不到明文,只能在服务器端获取,注意在获取的时候也要提供该设置进行匹配;

3、案例:

 axios.get('http://127.0.0.1:7001/setcookie',{
            withCredentials: true//允许跨域携带凭证(cookie)
        })
            .then(function (response) {//请求完成并成功
                console.log(response);
                console.log(document.cookie);
                axios.get('http://127.0.0.1:7001/getcookie',{
                    withCredentials: true
                })
                    .then(function (response) {
                        console.log(response);
                    })
                    .catch(function (error) {
                        console.log(error);
                    });
            })
            .catch(function (error) {
                console.log(error);
            });
     // 前端设置cookie
        document.cookie = `clientNum=111;max-age=${24*60*60};path=/`;

后端服务器设置

1、在config.default.js文件中需要配置

 config.cors = {
    // origin: '*', //允许的域,*代表所有的
    origin: 'http://127.0.0.1', //允许的域,*代表所有的
    allowMethods: 'GET,HEAD,PUT,POST,DELETE,PATCH',//允许跨域的请求方法
    credentials: true//后端允许跨域携带cookie
  };

2、在写完cookie接口后在对应的controller里面的文件

 async setcookie() {
    const { ctx } = this;
    // 设置cookie: ctx.cookies.set(key,value)
    ctx.cookies.set('num1',100);
    ctx.cookies.set('num2',200);
    ctx.body = 'cookie设置成功';
  }

3、获取cookie(cookie接口后在对应的controller里面的文件)

async getcookie() {
    const { ctx } = this;
    // 获取cookie: ctx.cookies.get(key)
    let num1 = ctx.cookies.get('num1');
    let num2 = ctx.cookies.get('num2');
    ctx.body = {
      num1,
      num2
    };

删除cookie

清除cookie把值设置为null即可

或者是直接在浏览器里面去把cookie手动删除

注意:

(1)前端设置的cookie虽然会每次发起请求都会携带给后端服务器,但是后端服务器是拿不到的

(2)后端设置的cookie,虽然保存在客户端的浏览器里面,但是前端去获取,是拿不到的

(3)需要设置同源
 

二、session

后端在用session存储数据的时候,会创建一个cookie(EGG_SESS),这个cookie会自动保存在客户端浏览器里面,  用session存储数据的时候,会创建一个唯一的cookie(EGG_SESS),然后当后端要获取存储的session数据时,必须根据在存储session的时候创建的这个cookie值解析对应的session

前端设置:

1、需要设置允许跨域携带凭证

    axios.get('http://127.0.0.1:7001/setsession',{
            withCredentials: true//允许跨域携带凭证(cookie)
        })

后端设置:

1、允许后端携带凭证(在config.default.js文件中需要配置)

  config.cors = {
    // origin: '*', //允许的域,*代表所有的
    origin: 'http://127.0.0.1', //允许的域,*代表所有的
    allowMethods: 'GET,HEAD,PUT,POST,DELETE,PATCH',//允许跨域的请求方法
    credentials: true//后端允许跨域携带cookie
  };

2、设置cookie值--在写完session接口后在对应的controller里面的文件

 async setsession() {
    const { ctx } = this;
    // 设置session:ctx.session.属性名 = 值;
    ctx.session.id = 101;
    ctx.session.account = '18965989898';
    ctx.body = 'session设置成功';
  }

3、获取session的值(写完session接口后在对应的controller里面的文件)

 async getsession() {
    const { ctx } = this;
    // 获取session:ctx.session.属性名
    let id = ctx.session.id;
    let account = ctx.session.account;
    ctx.body = {
      id,account
    };
  }

删除session

可以直接在浏览器里面去删,也可以在文件里面去设置

	class SessionController extends Controller {
  		async deleteSession() {
    			this.ctx.session = null;
  		}
};

注意:

(1)后端 在用session的时候,存储数据时会创建一个cookie(EGG_SESS),这个cookie就会自动会保存在浏览器

(2)用session存储数据的时候,会创建唯一个cookie(EGG_SESS),然后当后端要session数据时,必须根据存储的session的时候根据cookie值解析出对应的session

(3)设置 session 属性时不要以 _ 开头,不能为 isNew

session比cookie的不同之处

1.存放位置不同,cookie存放在客户端,session存放在服务器。

2.cookie中的数据可以看得清楚,但是session下发的是乱码,并且服务器自己缓存一些东西,下次浏览器的请求带着乱码上来,此时与缓存进行比较,看看是谁。

3.cookie的存放量小 不能大于4k,session下放的是乱码,且存在服务器,所以存放量理论上无限大。

最后

以上就是唠叨母鸡为你收集整理的cookie session的设置一、cookie  二、sessionsession比cookie的不同之处的全部内容,希望文章能够帮你解决cookie session的设置一、cookie  二、sessionsession比cookie的不同之处所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(48)

评论列表共有 0 条评论

立即
投稿
返回
顶部