sun*_*hit 13 django django-sessions
我真的不明白什么时候创建会话以及创建它的实体(每个ip,每个浏览器,每个登录用户).我在文档中看到默认情况下会话是按访问者创建的 - 但访问者(浏览器或IP)是什么?
Mad*_*ern 14
要显示网页,浏览器会向服务器发送HTTP请求,服务器会发回HTTP响应.每次单击网站上的链接时,都会发生新的HTTP事务处理,即它不是随时间持续存在的连接(如电话呼叫).您与网站的通信包含许多单一的HTTP交易(电话呼叫数十或几千,每个电话呼叫只需几个字).
那么服务器如何记住用户的信息,例如用户登录(ip地址不可靠)?第一次访问网站时,服务器会创建一个随机字符串,并在HTTP响应中要求浏览器创建一个带有该值的所谓HTTP cookie.Cookie实际上只是(cookie的名称)和值.如果你去一个简单的启用会话的Django站点,服务器会要求你的浏览器设置一个名为'sessionid'的cookie,其中包含一个随机生成的值.

随后您的浏览器将向该域发出HTTP请求,它将在HTTP请求中包含cookie.

服务器保存这些会话ID(对于django,默认是保存在数据库中),并将它们与所谓的会话变量一起保存.因此,基于与HTTP请求一起发送的会话ID,它可以挖掘出先前设置的会话变量以及修改或添加会话变量.如果你删除你的cookie(在Firefox中按住ctrl + shift + delete),你就会发现没有网站会记住你(Gmail,Facebook,Django网站等),你必须重新登录.大多数浏览器允许您禁用一般的cookie或特定网站(出于隐私原因),但这意味着您无法登录这些网站.
无法在同一浏览器中登录不同的GMail帐户,甚至不能从不同的窗口登录.但是可以使用Firefox登录一个帐户,使用Chrome登录另一个帐户.所以答案是:每个浏览器.然而,并不总是这么简单.您可以在Firefox中使用不同的配置文件,每个配置文件可以保留不同的cookie,因此您可以同时登录不同的帐户.还有用于保持多个会话的Firefox插件,例如MultiFox.
会话全部取决于您的浏览器在其HTTP请求中发送的会话cookie.
为了全面了解正在发生的事情,我建议为Firefox 安装FireBug和FireCookie插件.上面的截图来自FireBug的网络面板.FireCookie将概述您访问网站时设置的时间和Cookie,并允许您规定允许使用哪些Cookie.
如果存在服务器端错误,并且您有DEBUG = True,那么Django错误消息将显示有关HTTP请求的信息,包括发送的cookie

| 归档时间: |
|
| 查看次数: |
3162 次 |
| 最近记录: |