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

时间:2011-02-25 03:53:54

标签: django session cookies

我认为他们是一回事,但我的老板说这是不对的。有人可以解释这个区别吗?

2 个答案:

答案 0 :(得分:22)

Cookie位于客户端的浏览器上,仅仅是对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.

答案 1 :(得分:7)

Cookie不是Django或Python特定技术。 Cookie是一种在客户端浏览器中存储一小部分状态的方法。它用于补充(或破解,取决于您的观点)HTTP,这是一种无状态协议。这里有各种各样的限制,其他域名无法读取您的cookie,您只能存储几k数据(具体取决于浏览器!)等等。

Cookie可用于存储会话密钥。会话是存储服务器端的用户状态的集合。会话密钥被传递回服务器,这允许您查找该会话的状态。大多数Web框架(不仅仅是Django)都内置了某种会话概念。这使您可以将服务器端状态添加到HTTP会话中。