Bootstrap

2021-3-04 浏览器的多进程 session,cookie和token 等相关学习

1.chrome浏览器的多进程 多线程模型

Chrome的多进程架构

浏览器渲染进程的多线程机制

2.session,cookie和token究竟是什么

session,cookie和token究竟是什么

简单来说就是HTTP协议是无状态的,所以服务端和客户端的通信要首先鉴权,在此基础上才能保持资源的共享。所以引入了session+cookiesessioncookie都是服务端生成返回给客户端的,一般是在登录那条接口的response header里的set-cookie中返回,客户端收到后,后续的访问请求头中都会带上该cookie
由于cookie服务端不做存储,是存在客户端(浏览器)中的,所以有安全风险。当前主流方案是session+cookie,两者都用,
Set-Cookie: WebSession_6CB24A92A1=b6ea492bdd3f4e0b4889313800e48f5d812fac6373fd5766f60878049df0ab1a;path=/;HttpOnly

1.session存储于服务器,可以理解为一个状态列表,拥有一个唯一识别符号sessionId,通常存放于cookie中。服务器收到cookie后解析出sessionId,再去session列表中查找,才能找到相应session。依赖cookie
2.cookie类似一个令牌,装有sessionId,存储在客户端,浏览器通常会自动添加。
3.token也类似一个令牌,无状态,用户信息都被加密到token中,服务器收到token后解密就可知道是哪个用户。需要开发者手动添加。

3.手写一个返回数据类型的函数

核心是使用Object.prototype.toString.call()

// 手写一个返回数据类型的函数

function dataType(param){
    if(typeof param !=='object'){
        return (typeof param)
    }
     let paramResult=Object.prototype.toString.call(param)
     let result=paramResult.slice(8,paramResult.length-1)
     return result
}
4.关于构造函数返回值的问题

参考啵雨的博客

function G() {

}

function F() {
    return new G()
}

a = new F();
console.log(a);


console.log(a instanceof F);//false
function A() {
    this.a = 1
    return {
        a: 2
    }
}
A.prototype.a = 3
const a = new A()

console.log(a.a)//a等于 A函数返回的对象{a:2}
console.log(a.constructor)//Object
console.log(a.__proto__)//Object.prototype

关于构造函数:
一般构造函数不显式返回值,用户可以选择主动返回对象来覆盖正常的对象创建步骤
如果构造函数没有返回值:默认情况下 return this; 即返回创建的实例
如果返回简单数据类型:返回该实例
如果返回对象类型:返回这个对象类型,而不是实例

悦读

道可道,非常道;名可名,非常名。 无名,天地之始,有名,万物之母。 故常无欲,以观其妙,常有欲,以观其徼。 此两者,同出而异名,同谓之玄,玄之又玄,众妙之门。

;