一.Cookie 和 Session介绍:
Cookie:
Cookie实际上是一小段的文本信息。客户端请求服务器,如果服务器需要记录该用户状态,就使用response向客 户端浏览器颁发一个Cookie。客户端浏览器会把Cookie保存起来。当浏览器再请求该网站时,浏览器把请求的网址连同该Cookie一同提交给服务 器。服务器检查该Cookie,以此来辨认用户状态。服务器还可以根据需要修改Cookie的内容。
Session:
Session是另一种记录客户状态的机制,不同的是Cookie保存在客户端浏览器中,而Session保存在服务器上。客户端浏览器访问服务器的时候,服务器把客户端信息以某种形式记录在服务器上。这就是Session。客户端浏览器再次访问时只需要从该Session中查找该客户的状态就可以了。
如果说Cookie机制是通过检查客户身上的“通行证”来确定客户身份的话,那么Session机制就是通过检查服务器上的“客户明细表”来确认客户身份。Session相当于程序在服务器上建立的一份客户档案,客户来访的时候只需要查询客户档案表就可以了。
二.Cookie:
1.设置cookie
def index(request):
response = render_to_response("index.html") #变量指出响应
response.set_cookie("name","laobian")#设置cookie
# key, 键
# value='', 值
# max_age=None, 寿命,秒
# expires=None, 过期时间,和寿命冲突
# path='/', cookie起作用的范围
# domain=None, cookie起作用的域名
# secure=False, 是否用https传输cookie
# httponly=False, 只用用http传输cookie
return response #返回含有cookie的响应
2.校验cookie
1.先获取cookie
2.进行逻辑判断
from django.http import HttpResponse
def newList(request):
name = request.COOKIES.get("name") # 获取cookie --->1<---
if name: # 进行逻辑判断 --->2<---
articles = Article.objects.order_by("-time")
return render_to_response("newList.html",locals())
else:
return HttpResponse("老边呢?")
3.删除cookie
from django.http import HttpResponse
def newList(request):
name = request.COOKIES.get("name")
if name:
articles = Article.objects.order_by("-time")
response = render_to_response("newList.html",locals())
response.delete_cookie("name") # 删除cookie
return response
else:
return HttpResponse("老边呢?")
三.Session:
1.设置session
def index(request):
response = render_to_response("index.html") #变量指出响应
request.session["username"] = "laobian" #设置session
response.set_cookie("name","laobian") #设置cookie
# key, 键
# value='', 值
# max_age=None, 寿命,秒
# expires=None, 过期时间,和寿命冲突
# path='/', cookie起作用的范围
# domain=None, cookie起作用的域名
# secure=False, 是否用https传输cookie
# httponly=False, 只用用https传输cookie
return response #返回含有cookie的响应
2.获取和删除session:
from django.http import HttpResponse
def newList(request):
name = request.COOKIES.get("name")
session_name = request.session.get("username") #获取session
del request.session["username"] #删除session
if name:
articles = Article.objects.order_by("-time")
response = render_to_response("newList.html",locals())
response.delete_cookie("name")
return response
else:
return HttpResponse("老边呢?")
Cookie 和session在django当中具体的使用
如果网站涉及到了cookie登录校验
除了
1、login 登录
2、Register 注册
3、404
总结:
1.cookie与session的区别:
cookie保存在客户端,未设置存储时间的cookie为会话cookie保存在浏览器的进程开辟的内存中,当浏览器关闭后会话cookie也会被删除;设置了存储时间的cookie保存在用户设备的磁盘中直到过期。
session保存在服务器端,存储在IIS的进程开辟的内存中。
2.cookie与session的联系:
当服务器端生成一个session时就会向客户端发送一个cookie保存在客户端,这个cookie保存的是session的sessionId。这样才能保证客户端发起请求后客户端已经登录的用户能够与服务器端成千上万的session中准确匹配到已经保存了该用户信息的session,同时也能够确保不同页面之间传值时的正确匹配。
注:为了防止客户端禁用了cookie而无法使用session的情况可以把sessionId和其他用户信息重写到url中,每次请求都在url中附带sessionId和用户信息(不包含用户的敏感信息)