
[英]Django - Difference between Database backed sessions and Cookie Based Session?
[英]What is the difference between a cookie and a session in django?
我认为它们是同一回事,但我的老板说这是不对的。 有人可以解释一下区别吗?
Cookie是位于客户端浏览器上的东西,仅仅是对Session
的引用,默认情况下, Session
存储在您的数据库中。
cookie存储随机ID,不存储任何数据本身。 会话使用cookie中的值来确定数据库中的哪个Session
属于当前浏览器。
这与直接在cookie上写信息有很大不同。
例:
httpresponse.set_cookie('logged_in_status', 'True')
# terrible idea: this cookie data is editable and lives on your client's computer
request.session['logged_in_status'] = True
# good idea: this data is not accessible from outside. It's in your database.
Cookie不是Django或Python特定技术。 Cookie是一种在客户端浏览器中存储一小部分状态的方法。 它用于补充(或破解,取决于您的观点)HTTP,这是一种无状态协议。 这里有各种各样的限制,其他域名无法读取您的cookie,您只能存储几k数据(具体取决于浏览器的数量!)等。
Cookie可用于存储会话密钥。 会话是存储服务器端的用户状态的集合。 会话密钥被传递回服务器,这允许您查找该会话的状态。 大多数Web框架(不仅仅是Django)都内置了某种会话概念。这使您可以将服务器端状态添加到HTTP会话中。
补充'裕二'富田'富田的回答'
使用 cookie 您可以在客户端浏览器上设置任何信息,而不仅仅是 id(会话 id),
与会话相比,cookie 是有限的(大小限制为 kb)、安全性和灵活性都较低。
django 会话基于 cookie,django 使用 cookie 在客户端保存会话 ID
会话不受数据大小限制(因为它们保存在服务器的数据库中),更安全,更灵活。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.