繁体   English   中英

django 中的 cookie 和会话有什么区别?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM