cookie 与session的区别

玩技站长
玩技站长
玩技站长
管理员, Keymaster
10833
文章
669
评论
经验总结141,570字数 1048阅读3分29秒阅读模式

由于HTTP协议是无状态的,在WEB系统中,怎么识别请求来自于哪里呢?是哪一个用户发起的请求呢?

为了解决这一个问题,HTTP协议引入了cookie和session这两个 概念。文章源自玩技e族-https://www.playezu.com/16175.html

cookie是什么呢?文章源自玩技e族-https://www.playezu.com/16175.html

cookie是服务器传递到浏览器,保存在浏览器中的数据,然后浏览器每次请求都带上cookie,这样就可以标识用哪一个用户发起的请求, 比如说把用户登录的用户名和密码保存在cookie中, 只要cookie没有过期,以后用户每次登录都可以自动登录了,不需要再次输入用户名和密码, 因为浏览器在发起请求的时候已经把cookie中的用户名和密码传递给服务器了。文章源自玩技e族-https://www.playezu.com/16175.html

测试人员肯定经常听到开发对你说,我这边都是可以的,你清理一下你的浏览器的缓存,肯定就可以了,结果。。。有时候还是不行文章源自玩技e族-https://www.playezu.com/16175.html

 文章源自玩技e族-https://www.playezu.com/16175.html

session是什么呢?文章源自玩技e族-https://www.playezu.com/16175.html

session把用户的信息保存在服务器上面, 浏览器第一次访问的时候服务器把sessionID传递到浏览器,然后浏览器把Session_id保存在cookie中, 每次访问把session_id带上,服务器就可以标识这个请求来自于那个用户,然后根据session_id查这个这个用户的seesion里面记录了哪些数据。文章源自玩技e族-https://www.playezu.com/16175.html

 文章源自玩技e族-https://www.playezu.com/16175.html

会话cookie一般不存储在硬盘上而是保存在内存里,当然这种行为并不是规范规定的。若设置了过期时间,浏览器就会把cookie保存到硬盘上,关闭后再次打开浏览器,这些cookie仍然有效直到超过设定的过期时间。存储在硬盘上的cookie可以在不同的浏览器进程间共享,比如两个IE窗口。而对于保存在内存里的cookie,不同的浏览器有不同的处理方式session机制。session机制是一种服务器端的机制,服务器使用一种类似于散列表的结构(也可能就是使用散列表)来保存信息。文章源自玩技e族-https://www.playezu.com/16175.html

 文章源自玩技e族-https://www.playezu.com/16175.html

当程序需要为某个客户端的请求创建一个session时,服务器首先检查这个客户端的请求里是否已包含了一个session标识(称为session id),如果已包含则说明以前已经为此客户端创建过session,服务器就按照session id把这个session检索出来使用(检索不到,会新建一个),如果客户端请求不包含session id,则为此客户端创建一个session并且生成一个与此session相关联的session id,这个session id将被在本次响应中返回给客户端保存。保存这个session id的方式可以采用cookie,这样在交互过程中浏览器可以自动的按照规则把这个标识发送给服务器。一般这个cookie的名字都是类似于SEEESIONID。但cookie可以被人为的禁止,所以必须有其他机制以便在cookie被禁止时仍然能够把session id传递回服务器。其中一种技术叫做URL重写,就是把session id直接附加在URL路径的后面。还有一种技术叫做表单隐藏字段。就是服务器会自动修改表单,添加一个隐藏字段,以便在表单提交时能够把session id传递回服务器。

cookie 和session 的比较:

(1)都是为了用来记录用户状态。

(2)cookie数据存放在客户的浏览器上,session数据放在服务器上。

(3)cookie不是很安全,别人可以分析存放在本地的cookie并进行cookie欺骗。

(4)session会在一定时间内保存在服务器上。当访问增多,对服务器产生较大压力。

(5)单个cookie保存的数据不能超过4K,很多浏览器都限制一个站点最多保存20个cookie。

(6)所以一般做法是:将登录信息等重要信息存放为session,其他需要保留的信息放在cookie中。

 
评论  14  访客  14
    • 萧瑟
      萧瑟 4

      总结的不错 :wink: :wink:

      • 林三
        林三 2

        我居然经过你的讲解,懂了些。找不到留言本,所以就这里祝你元旦快乐吧!

        • 小石博客
          小石博客 3

          涨知识了 :mrgreen:

          • boke112导航
            boke112导航 0

            cookie 和session懂得原理和区别之后,根据需求实用,特别是最后说的“将登录信息等重要信息存放为session,其他需要保留的信息放在cookie中”还是非常不错的建议的。

            • 久伴博客
              久伴博客 2

              最近真累

              • 阿喵
                阿喵 0

                来看看

                • wordpress建站吧
                  wordpress建站吧 1

                  一个在服务器,一个在客户端

                匿名

                发表评论

                匿名网友
                确定

                拖动滑块以完成验证