web请求 header请求 讲解 cookie 和session 相爱相杀

首先要明白原理

原理

cookie  存储的客户端,服务器向客户端保存数据

session 存储在服务器的。依赖cookie

sessionStorage  本地存储,基于h5,客户端存储,生命周期

localStorage    本地存储,实例化到本地的硬盘

cookie和session都是同步

session

概念

session代表一次会话。

web会话:

打开网站,访问我的网站创建一个session时会话开始,同时向客户端相应一个cookie,在这个网站中我们可能发送多次请求,直至我关闭浏览器会话斌并不会结束。服务器端session没有了,会话结束,或者cookie没有了,session结束,session依赖于cookie。这整个过程我们可以理解成一次会话。每次请求都是独立的,http是无状态的,这一次会话中多个请求之间需要进行数据共享,这个时候我们就需要使用session

当向服务器发送请求时,执行session_start(),这个方法会到session池当中去查找有没有一个session,根据客户端传递过来的cookie的sessionId去查找。假设时客户端没有传递,服务器会创建一个session,把session放在session池当中,然后以关联数组的形式去存放sessionId作为key,session作为值去进行存储。然后给客户端一个响应头。这个响应头就是一个cookie,这恶鬼cookie存的就是sessionId

session默认保存一定的时间之后自动释放

会话结束的两种情况:

1 session超时

2 客户端cookie清除

心跳机制:

session存活时间有默认值,如果在没有超过默认时间时,请求了一下服务器,获取了服务器的session,相当于刷了一次vi心跳,激活了session,session又可以存活默认时间

session池放在内存中;如果访问的多,可以放在硬盘上,可以使用机群

访问多的时候,就可以使用一个请求转发服务器,不同的请求转发到不同的服务器,减轻服务器的压力====》session同步

cookie

cookie是服务器给客户端发送的一个小纸条,第一次访问服务器,服务器可以向客户端发送一个cookie,可以往这个cookie里面保存这个数据。客户端浏览器接收到服务器端响应的cookie之后,会保存起来,当我的客户端再去访问服务器的时候,会把这个cookie里面的数据带到服务器

cookie是http协议定义的规范

原理:传递的原理

cookie是服务器发送到客户端

发送一个请求到服务器,服务器向客户端发送cookie,这个cookie的值是通过响应头名称Set-Cookie响应头的值,是设置的这个值。客户端拿到set-Cookie之后,会按照http协议的方式去解析,把cookie进行保存,再去请求服务器,客户端会把cookie里面的数据以Cookie的方式发送到服务器

生命周期:

客户端如何保存cookie,以及cookie保存的时间

三种cookie:

内存cookie   服务器给客户端发送一个cookie,保存在客户端浏览器的内存中,当关闭浏览器,cookie就会消失 setcookie('name','zhangsan')

硬盘cookie   服务器给客户端发送一个cookie,保存在用户的硬盘上面,持久化。关闭电脑,重启电脑,cookie依然存在(清除历史记录来清除cookie) 

setcookie('name','zhangsan',time()+3600)

====>cookie在客户端的硬盘上的存活时间,1小时之后cookie销毁

追杀cookie  把写在客户端的cookie清除掉

setcookie('name','',-1)

(服务器端决定发送的cookie的类型)

应用场景:

http协议的基于请求 响应,http协议是无状态的,服务器端不能记住客户端的状态。cookie是用来记住用户的状态,用来进行多个请求之间的数据共享,cookie是保存在客户端的。

在客户端也可以设置cookie

原文地址:https://www.cnblogs.com/songadmin/p/13259033.html