zoukankan      html  css  js  c++  java
  • cookie和session的区别

    cookie和session后是会话技术能够存储交互中的信息

     1.存储的位置不同.cookie存储在客户端.每次访问服务器都会带着当前域名下的cookie,

      而session存储在服务器端 占用服务器资源

     2.存储的限制不同.浏览器对cookie有个数限制,一般单个域名下最多有50个,每个cookie的最大值为4k

      session则没有限制

     3.安全性方面.cookie的数据存储在客户端容易被编辑和伪造所以相对来说不是特别安全

     4.请求速度方面.因为cookie每次都会传递给服务器,所以如果写入的cookie数据较多就会导致报文体积的增大,影响请求的速度

      而session是通过sessionid来识别的所以影响不大

     5.生命周期方面.cookie的失效是即时的 

      session的失效是有一定概率触发的  PHP默认概率为1/1000  生命周期为24分钟

     

     深入回答

      cookie和session都是会话技术但二者实现的原理不同

      一 .  原理不同

        cookie实现会话的原理是每次都会将cookie值存放在HTTP请求报文的请求头中,服务器可以接受报文中的参数  如:id和用户名

        session实现会话的原理是,  客户端在请求服务器的时候,检测请求中是否存在对应的cookie如果存在就直接进行读取和写入数据

        如果不存在就生成一个随机的字符串, 并生成响应的文件进行session数据的读写,  最后再将随机生成的字符串写入到客户端的cookie中

      二.  二者的联系

        session的现实默认是依赖cookie的,  因为sessionid默认储存在cookie中.  但是如果客户端禁用了cookie,  session依然是可以使用的 

        客户端只需要将正确的session id传递给服务器 即可

        比如url参数, QQ的会员中心

      三.  安全性问题

        session和cookie都存在一定的问题因为二者都是基于HTTP请求的  HTTP请求一但被截获就会造成数据的丢失和一定程序的泄露,

        建议服务器配置HTTPS证书  这样能有效的防止数据的丢失和泄露,并且对cookie的数据进行加密处理,不要明文传输

      四.   session的跨服务器的问题(session共享)

        PHP语言默认存储session的位置是tmp目录下,在服务器集群中就会出现session共享的问题 . 每个用户的session会存储在不同的服务器下, 

        就会导致下次登录时,可能得不到自己的session信息,

        此时就可以将session储存在一台单独的服务器下,用MySQL或者redis进行保存,  每台服务器都到该台服务器下进行数据的存取和写入即可.

  • 相关阅读:
    Git常用命令整理
    JavaScript常用代码书写规范
    程序猿常用英语单词汇总
    15个常用的javaScript正则表达式
    [Java复习] 服务注册中心 (Eureka, Zookeeper)
    [Java复习] 面试突击
    [Java复习] 面试突击
    [Java复习] 面试突击
    [Java复习] Spring Cloud
    [Java复习] 微服务
  • 原文地址:https://www.cnblogs.com/wwlong/p/10198191.html
Copyright © 2011-2022 走看看