cookie介绍

  1. 什么是cookie,作用是什么
  • 由于Http协议是无状态的,且传统服务器只能被动的响应请求,所以,当服务器获取到请求的时候,并不知道当前请求属于哪个客户端!

  • 服务器为了能够明确区分每个客户端,需要使用一些小技术,来根据不同的请求区分不同的客户端;

  • 只要有请求发生,那么必然对应一个客户端,我们可以在每次客户端发起请求的时候,向服务器自动发送一个标识符,告诉服务器当前是哪个客户端正在请求服务器的数据;

  • 如何提供这个标识符呢?我们可以在请求头(Request Headers)中添加一个标签,叫做cookie,这样,每次发送请求,都会把这个cookie随同其他报文一起发送给服务器,服务器可以根据报文中的cookie,区分不同的客户端浏览器。

  • 如何在客户端请求头中添加标识符?

  • 在Node中可以在writeHeader的时候,通过Set-Cookie来将cookie标识通过响应报文发送给客户端!

  • 客户端也可以通过一些方式来操作自己的cookie,比如通过jquery.cookie这个插件!

  1. cookie的基本使用

    var http = require(‘http’);

    var server = http.createServer();

    server.on(‘request’, function (req, res) {
    // 解析cookie
    var cookies = {};
    var cookieStr = req.headers.cookie; // 从请求的headers中获取cookie信息
    cookieStr && cookieStr.split(’;’).forEach(function (item) {
    var parts = item.split(’=’);
    cookies[parts[0].trim()] = parts[1].trim(); // 将cookie解析出来,保存到对象中
    });

     res.writeHeader(200, {
         'Content-Type': 'text/plain; charset=utf-8',
         "Set-Cookie": ['issend=ok', 'age=20']
     });
    
     if(cookies.issend ==='ok'){
         res.end('不要太贪心哦!');
     }else{
         res.end('呐,赏你一朵小红花~~');
     }
    

    });

    server.listen(4000, function () {
    console.log(‘服务器已启动!’);
    });

通过expires设置Cookie的过期时间

// 设置 过期时间 为60秒之后
// 注意:在设置过期时间的时候,需要将时间转换为 UTC 格式
var expiresTime = new Date(Date.now() + 1000 * 60).toUTCString();
res.writeHeader(200, {
  'Content-Type': 'text/html; charset=utf-8',
  'Set-Cookie': ['isvisit=true;expires=' + expiresTime, 'test=OK']
});
res.end('<h3>你好,欢迎光临,送给你一个苹果!</h3>');

3.GMT和UTC有什么区别?格林尼治标准时(GMT)与世界时(UTC)是怎么回事

cookie可以被伪造,不安全

使用谷歌插件edit this cookie,就能伪造cookie数据!所以不要使用cookie存储敏感的数据!比如登录状态和登录信息;

一些敏感的数据,应该存储都服务器端!

4.什么是Cookie的应用场景

  1. 对安全性要求不高
  2. 不需要存储大量的数据
  3. 主要应用场景,是用来做 客户端 与 服务器之间的 状态保持技术;
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值