kookie, session

93 阅读3分钟

懒得总结,直接看别人总结的好了

介绍几个新API

  1. .substring()方法 xx.substring()括号中带的参数不一样,效果就会有很大的区别,详细如下:

xx.substring(0,2)表示取第一个和第二个字符(0,1,2表示第一、二、三个字符,含头不含尾的原则就只包含第一、二个字符),返回一个新的字符串(只包含指定的第一和第二个字符);

xx.substring(2)表示去掉前两个字符,返回一个新的字符串(只包含去掉前两个字符后剩下的字符串)

image.png

  1. JSON.parse()方法将JSON格式字符串转换为js对象(属性名没有双引号)。
    解析前要保证数据是标准的JSON格式,否则会解析出错。

  2. node.js 的 Buffer.concat : 缓冲区合并

语法

Node 缓冲区合并的语法如下所示:

Buffer.concat(list[, totalLength])

参数

参数描述如下:

  • list - 用于合并的 Buffer 对象数组列表。
  • totalLength - 指定合并后Buffer对象的总长度。

返回值

返回一个多个成员合并的新 Buffer 对象。

实例

var buffer1 = Buffer.from(('菜鸟教程'));
var buffer2 = Buffer.from(('www.runoob.com'));
var buffer3 = Buffer.concat([buffer1,buffer2]);
console.log("buffer3 内容: " + buffer3.toString());
// buffer3 内容: 菜鸟教程www.runoob.com
  1. node.js操作json数据库
//读数据库
const usersString = fs.readFileSync("./db/users.json").toString(); //字符串
const usersArray = JSON.parse(usersString); //变成数组(对象)
console.log(usersArray);

//写数据库
const user3 = { id: 3, name: "tom", password: "yyy" };
usersArray.push(user3);
const string = JSON.stringify(usersArray); //变成字符串
fs.writeFileSync("./db/users.json", string);
  1. fs.readFileSync 和 fs.readFile 区别: 同步读取的函数和异步函数相比,多了一个Sync后缀,并且不接收回调函数,函数直接返回结果。

  2. 当读取二进制文件时,不传入文件编码时,回调函数的data参数将返回一个Buffer对象。在Node.js中,Buffer对象就是一个包含零个或任意个字节的数组(注意和Array不同)。

Buffer对象可以和String作转换,例如,把一个Buffer对象转换成String:

// Buffer -> String
var text = data.toString('utf-8');
console.log(text);

或者把一个String转换成Buffer

// String -> Buffer
var buf = Buffer.from(text, 'utf-8');
console.log(buf);
  1. Array.prototype.find()

find() 方法返回数组中满足提供的测试函数的第一个元素的值。否则返回 undefined

const array1 = [5, 12, 8, 130, 44];
const found = array1.find(element => element > 10);
console.log(found);
// expected output: 12
  1. Set-Cookie
    注意:正常人不会让`前端设置cookie

  2. session时效性:为保证安全性可将session注销,使得每次登陆都重新创建一个session和新的随机数对应用户信息


GET/POST请求

  1. AJAX默认为get请求,这样导致数据直接出现在url里;因此要改成post请求使它出现在下面

uTools_1671274495991.png

uTools_1671274313693.png

  1. GET可以用query拿到数据;POST 请求见上API及代码

比较绕的操作:

try {
      userId = cookie    // cookie是个数组
        .split(";")      // 分隔
        .filter((s) => s.indexOf("user_id=") >= 0)[0]  // filter找元素,indexOf返回索引
        .split("=")[1];
    } catch (error) {}

image.png

问题与想法

  1. Q : 既然cookie里的user_id可以被开发者工具修改那为啥还要用?
    A : 用于反馈登录状态。安全性的解决办法:seesion,加密+JWT。这里我们将user信息存到session里