[oldboy-django][4python面试]cookie和session比较
session定义(知乎网上)
Session的数据不是储存在客户端上的,而是储存在服务器上的;而客户端使用Cookie储存一个服务器分配的客户端会话序号(Session ID),当客户端请求服务器时,会将这个Session ID传递给服务器,服务器通过配对获取Session内容。
session定义(网上)
用户认证都是基于 session 的,即在服务端生成用户相关的 session 数据,而发给客户端 sesssion_id 存放到 cookie 中,这样用客户端请求时带上 session_id 就可以验证服务器端是否存在 session 数据,以此完成用户认证。这种认证方式,可以更好的在服务端对会话进行控制,安全性比较高(session_id 随机),但是服务端需要存储 session 数据(如内存或数据库),这样无疑增加维护成本和减弱可扩展性(多台服务器)。
session自己总结的定义
- session定义
cookie:
保存在客户端的键值对, 依赖cookie,用来保持会话,记住登录状态;敏感信息不会直接给用户
session:
保存在服务端的数据(本质上是键值对)
session原理:
每一个用户登录成功后,服务端生成一个属于该用户的随机字符串,
并把这个随机字符串作为字典的Key,
往这个key添加该用户的敏感信息; 并将该随机字符串作为response_cookies 中sessionid返回给客户端。
客户发送下一个请求的时候,携带该随机字符串,服务端在字典找到该随机字符串,就会记得该用户的登录状态。
好处:敏感信息没有给客户端; 依赖cookie,保持会话
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
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
session 和cookie的区别
- session 和cookie 比较
Session是在服务端保存的一个数据结构,用来跟踪用户的状态,这个数据可以保存在集群、数据库、文件中;
Cookie是客户端保存用户信息的一种机制,用来记录用户的一些信息,也是实现Session的一种方式。
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名称的由来,给用户的一点甜头。
详情http://www.cnblogs.com/liuzhipenglove/p/7751174.html
推荐学习网站http://blog.csdn.net/qq_15096707/article/details/74012116
[oldboy-django][4python面试]cookie和session比较的更多相关文章
- {Django基础八之cookie和session}一 会话跟踪 二 cookie 三 django中操作cookie 四 session 五 django中操作session
Django基础八之cookie和session 本节目录 一 会话跟踪 二 cookie 三 django中操作cookie 四 session 五 django中操作session 六 xxx 七 ...
- Django框架 之 Cookie、Session整理补充
Django框架 之 Cookie.Session整理补充 浏览目录 Django实现的Cookie Django实现的Session 一.Django实现的Cookie 1.获取Cookie 1 2 ...
- 【python】-- Django 分页 、cookie、Session、CSRF
Django 分页 .cookie.Session.CSRF 一.分页 分页功能在每个网站都是必要的,下面主要介绍两种分页方式: 1.Django内置分页 from django.shortcuts ...
- Django框架 之 Cookie和Session初识
Django框架 之 Cookie和Session初识 浏览目录 Cookie介绍 Django中的Cookie Session 一.Cookie介绍 1.Cookie产生的意义 众所周知,HTTP协 ...
- Django框架07 /cookie和session
Django框架07 /cookie和session 目录 Django框架07 /cookie和session 1. django请求生命周期 2. cookie 3. session 4. 总结 ...
- Django中的cookie与session
cookie与session的实现原理 HTTP被设计为”无状态”,每次请求都处于相同的空间中. 在一次请求和下一次请求之间没有任何状态保持,我们无法根据请求的任何方面(IP地址,用户代理等)来识别来 ...
- Django 中的 cookie 和 session
一.cookie 由于HTTP协议是无状态的,而服务器端的业务必须是要有状态的.Cookie诞生的最初目的是为了存储web中的状态信息,以方便服务器端使用.比如判断用户是否是第一次访问网站.目前最新的 ...
- django基础 -- 8.cookie 和 session
一. cookie 1.cookie 的原理 工作原理是:浏览器访问服务端,带着一个空的cookie,然后由服务器产生内容, 浏览器收到相应后保存在本地:当浏览器再次访问时,浏览器会自动带上Cooki ...
- Django组件之cookie与session
一.引子 http协议是无状态的,就是它不会记录请求和响应的任何信息,比如你访问一个服务器的一个网页时,先要你登录一下,然后进入网页,但当你要进入这个服务器的另一个网页时,它照常不会知道刚才你已经登录 ...
随机推荐
- dac verilog ad5601
首先从官网下载数据手册.DAC有串行有并行,ad5601是串行,(需要好多时钟沿的移位内部转换为并行在输出). 按照手册的时序编写程序, 关注下芯片的波特率范围 看看手册的数据传输那些事有效的数据位 ...
- shrio中去掉 login;JSESSIONID
shrio中去掉 login;JSESSIONID 在session管理器配置页面中新增一条记录
- 使用HANA Web-based Development Workbench创建最简单的Server Side JavaScript
服务器端的JavaScript, 看下wikipedia的介绍: https://en.wikipedia.org/wiki/JavaScript#Server-side_JavaScript Ser ...
- git版本管理工具 标签(Tag) / 版本回退 / 分支的简单使用
a.标签 标签,可以使用这个功能来标记发布结点. 举个例子, 假如我们的项目版本目前是1.2版本, 上级要求这个版本要在半个月后再进行上传至Appstore, 并要求我们未来的半个月内,去写1.3版本 ...
- IOS类似9.png
图形用户界面中的图形有两种实现方式,一种是用代码画出来,比如Quartz 2D技术,狠一点有OpenGL ES,另一种则是使用图片. 代码画的方式比较耗费程序员脑力,CPU或GPU; 图片则耗费磁盘空 ...
- vuejs挂载点,模板与实例的关系
<body> <div id='root'> <h1>{{msg}}</h1> </div> <script> new Vue( ...
- 事件流,事件对象和jQuery
事件流 多个彼此嵌套元素,他们拥有相同的事件,最内部元素事件被触发后,外边多个元素的同类型事件也会被触发,多个元素他们同类型事件同时执行的效果称为“事件流” 例子:html代码: <div cl ...
- css代码
#footr { background: #3e434a } #header #blogTitle { background: url("http://images.cnblogs.com/ ...
- JavaScript 基础语法
1 谈谈 JavaScript JavaScript,通常会简称为'JS', 是一种浏览器脚本语言 1.1 JavaScript 编程语言特点 JavaScript是一种脚本编程语言 JavaScri ...
- PSTR、LPSTR等宏原型
1.首先介绍char.wchar_t ,宽字符wchar_t和窄字符char. 窄字符char了,大家都很清楚,就是8bit表示的byte,长度固定.char字符只能表示ASII码表中的256个字符, ...