正在浏览 Django 文档,发现这个“ https://docs.djangoproject.com/en/1.4/topics/http/sessions/#using-database-backed-sessions ”。数据库支持的会话和基于 cookie 的会话有什么区别?一个比另一个有什么优势?有什么缺点?
问问题
8372 次
1 回答
13
网站使用Session来存储跨多个页面加载的访问者的应用程序状态。
Cookie 会话
- 将他们的数据存储在客户端/用户端
- 当您拥有一组 Web 服务器时,可以顺利工作
- 浏览器通常将 cookie 限制为每个域的最大大小约为 4 KB,因此限制了会话数据大小
- Cookie 可以设置为较长的生命周期,这意味着存储在会话 cookie 中的数据可以存储数月甚至数年(但用户可以清除 cookie)
- 必须设置 HttpOnly 和 Secure 标志,否则很容易被 XSS 窃取
数据库会话
- 存储他们的数据服务器端
- 您的一个 Web 服务器处理第一个请求,集群中的其他 Web 服务器将没有存储的信息,除非集中存储用户会话数据
- 客户无权访问您存储的有关他们的信息,因此更适合敏感数据。
- 数据不必在每个请求上从客户端传输到服务器(客户端只需要发送一个 ID,以便服务器可以加载数据)
- 可以存储更多数据,因为存储在服务器上而不是 cookie 中
Cookie 会话与数据库会话
| 特色 | Cookie 会话 | 数据库会话 | |-------------------------------------------|----------------- |-------------------| | 无需数据库即可工作 | 是 | 没有 | | 可以存储敏感的用户数据| 否* | 是 |
* 可以在服务器上存储引用敏感用户数据的指针,而不是敏感数据本身。
Cookie 会话和数据库会话的工作方式相同,唯一的区别是数据的存储位置。 Django默认使用数据库会话,而Flask默认使用 Cookie 会话。
更多信息:
https://en.wikipedia.org/wiki/Session_(computer_science)
http://php.about.com/od/learnphp/qt/session_cookie.htm
http://wonko.com/post/why-你可能应该使用 cookie 存储会话数据
http://www.tuxradar.com/practicalphp/10/1/0
于 2013-08-14T19:09:09.300 回答