[oldboy-django][4python面试]cookie和session比较

Posted liuzhipenglove

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[oldboy-django][4python面试]cookie和session比较相关的知识,希望对你有一定的参考价值。

session定义(知乎网上)

  Session的数据不是储存在客户端上的,而是储存在服务器上的;而客户端使用Cookie储存一个服务器分配的客户端会话序号(Session ID),当客户端请求服务器时,会将这个Session ID传递给服务器,服务器通过配对获取Session内容。 
View Code

session定义(网上)

用户认证都是基于 session 的,即在服务端生成用户相关的 session 数据,而发给客户端 sesssion_id 存放到 cookie 中,这样用客户端请求时带上 session_id 就可以验证服务器端是否存在 session 数据,以此完成用户认证。这种认证方式,可以更好的在服务端对会话进行控制,安全性比较高(session_id 随机),但是服务端需要存储 session 数据(如内存或数据库),这样无疑增加维护成本和减弱可扩展性(多台服务器)。
View Code

session自己总结的定义

- session定义
cookie:
            保存在客户端的键值对, 依赖cookie,用来保持会话,记住登录状态;敏感信息不会直接给用户
session:
            保存在服务端的数据(本质上是键值对)
session原理:
            每一个用户登录成功后,服务端生成一个属于该用户的随机字符串,
            并把这个随机字符串作为字典的Key,
            往这个key添加该用户的敏感信息; 并将该随机字符串作为response_cookies 中sessionid返回给客户端。
            客户发送下一个请求的时候,携带该随机字符串,服务端在字典找到该随机字符串,就会记得该用户的登录状态。
            好处:敏感信息没有给客户端; 依赖cookie,保持会话
View Code

session和cookie区别,网上总结的很好(在django中,session数据是默认存储在数据库中即django_session表)

1,session 在服务器端,cookie 在客户端(浏览器)
2,session 默认被存在在服务器的一个文件里(不是内存)
3,session 的运行依赖 session id,而 session id 是存在 cookie 中的,也就是说,如果浏览器禁用了 cookie ,同时 session 也会失效(但是可以通过其它方式实现,比如在 url 中传递 session_id)
4,session 可以放在 文件、数据库、或内存中都可以。
5,用户验证这种场合一般会用 session 因此,维持一个会话的核心就是客户端的唯一标识,即 session id

作者:冯特罗
链接:https://www.zhihu.com/question/19786827/answer/21643186
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
View Code

session 和cookie的区别

 - session 和cookie 比较
        Session是在服务端保存的一个数据结构,用来跟踪用户的状态,这个数据可以保存在集群、数据库、文件中;
        Cookie是客户端保存用户信息的一种机制,用来记录用户的一些信息,也是实现Session的一种方式。
View Code

session和cookie的用途

    - session和cookie用途
        1. 由于HTTP协议是无状态的协议,所以服务端需要记录用户的状态时,
            就需要用某种机制来识具体的用户,这个机制就是Session.
            典型的场景比如购物车,当你点击下单按钮时,由于HTTP协议无状态,
            所以并不知道是哪个用户操作的,所以服务端要为特定的用户创建了特定的Session,
            用用于标识这个用户,并且跟踪用户,这样才知道购物车里面有几本书。
            
            这个Session是保存在服务端的,有一个唯一标识。
            在服务端保存Session的方法很多,内存、数据库、文件都有。
            集群的时候也要考虑Session的转移,在大型的网站,
            一般会有专门的Session服务器集群,用来保存用户会话,
            这个时候 Session 信息都是放在内存的,
            使用一些缓存服务比如Memcached之类的来放 Session。
            
        2. 思考一下服务端如何识别特定的客户?
           这个时候Cookie就登场了。每次HTTP请求的时候,客户端都会发送相应的Cookie信息到服务端。
           实际上大多数的应用都是用 Cookie 来实现Session跟踪的,
           第一次创建Session的时候,服务端会在HTTP协议中告诉客户端,
           需要在 Cookie 里面记录一个Session ID,以后每次请求把这个会话ID发送到服务器,
           我就知道你是谁了。有人问,如果客户端的浏览器禁用了 Cookie 怎么办?
           一般这种情况下,会使用一种叫做URL重写的技术来进行会话跟踪,
           即每次HTTP交互,URL后面都会被附加上一个诸如 session_id=xxxxx 这样的参数,
           服务端据此来识别用户。
            
        3. Cookie其实还可以用在一些方便用户的场景下,
           设想你某次登陆过一个网站,下次登录的时候不想再次输入账号了,怎么办?
           这个信息可以写到Cookie里面,访问网站的时候,
           网站页面的脚本可以读取这个信息,就自动帮你把用户名给填了,能够方便一下用户。
           这也是Cookie名称的由来,给用户的一点甜头。
View Code

详情http://www.cnblogs.com/liuzhipenglove/p/7751174.html

推荐学习网站http://blog.csdn.net/qq_15096707/article/details/74012116

以上是关于[oldboy-django][4python面试]cookie和session比较的主要内容,如果未能解决你的问题,请参考以下文章

{oldboy-django][2深入django]分页功能

[oldboy-django][3作业汇总]相亲网

[oldboy-django][2深入django]老师管理--查看,添加,编辑

[oldboy-django][2深入django]初始Form组件

[oldboy-django][2深入django]点击刷新验证码

[oldboy-django][5python基础][内置函数]zip