zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    Oracle 安装安全补丁过程中出现的问题
    Oracle 设置日志模式
    Oracle 设置archivelog错误解决方案
    sum() over() 函数的使用
    C盘清理,移动node 依赖和缓存文件
    ol设置最佳可视范围和限制缩放
    flex弹性布局模式下文字超出显示省略号
    查看svn本地账户和密码
    flutter apk启动闪退问题
    More than one file was found with OS independent path 'lib/armeabi-v7a/libflutter.so'
  • 原文地址:https://www.cnblogs.com/songadmin/p/13259033.html
Copyright © 2011-2022 走看看