当客户端访问时,服务端会为客户端生成一个 Cookie
键值对数据,通过 Response
响应给到客户端。当下一次客户端继续访问相同的服务端时,浏览器客户端就会将这个 Cookie
值连带发送到服务端
Cookie
值存储在浏览器下,一般在你的浏览器安装目录的 Cookie
目录下,我们也可以通过F12或者各种浏览器的开发者工具来获取到
因为 cookie
是保存在浏览器中的一个纯明文字符串,所以一般来说服务端在生成 cookie
值时不建议存储敏感信息比如密码
cookie大小上限为4kb
一个服务器最多在客户端上保存20个cookie,一个浏览器 最多保存300个cookie,cookie不安全不建议存敏感信息是明文存储的,是一个k/v格式的键值对
在 django
的代码中,我们可以使用一些提供 Response
响应的类,如: HttpResponse
, redirect
等实例的内置 set_cookie
函数来进行 django
项目中的 Cookie
设置
设置cookie
class CookieOper(View):
定义方法设置、获取cookie 删除cookie
def get(self,request):
创建响应对象
resp = HttpResponse()
设置cookie
resp.set_cookie(“name”,”hahahaha”)
resp.set_cookie(“pwd”,”123456″)
获取一下name的值
print(request.COOKIES.get(“name”))
删除cookie
resp.delete_cookie(“name”)
获取一下name
print(request.COOKIES.get(“name”))
返回响应对象
return resp
cookie:存在浏览器中明文,不适合存储敏感信息
虽然说有了 Cookie
之后,我们把一些信息保存在客户端浏览器中,可以保持用户在访问站点时的状态,但是也存在一定的安全隐患, Cookie
值被曝露, Cookie
值被他人篡改,等等。我们将换一种更健全的方式,也就是接下来要说的 Session
。
Session
在网络中,又称会话控制,简称会话。用以存储用户访问站点时所需的信息及配置属性。当用户在我们的 Web
服务中跳转时,存储在 Session
中的数据不会丢失,可以一直在整个会话过程中存活
之后的一些客户端数据获取,都是通过获取客户端向服务端发起的 HttpRequest
请求中里 Cookie
中的 sessionid
之后,再用该 sessionid
从服务端的 Session
数据中调取该客户端存储的 Session
数据
注意:补充说明,默认存储在数据库的 Session
数据,是通过 base64
编码的,我们可以通过 Python
的 base64
模块下的 b64decode()
解码得到原始数据
整个过程结束之后:客户端浏览器存储的其实也只是一个 识别会话的随机字符串 (xxx)
而服务器中是通过这个随机的字符串 (xxx:value)
进行真正的存储
Session
的使用必须在 Settings
配置下
当 settings.py
中 SessionMiddleware
激活后在视图函数的参数 request
接收到的客户端发来的 HttpResquest
请求对象中都会含有一个 session
属性
这个属性和之前所讨论的 Cookie
类似,是一个类字典对象,首先支持如下常用字典内置属性
设置session
class SessionOper(View):
def get(self,request):
设置session
request.session[“name”] = “hahahahaha”
获取session
print(request.session.get(“name”))
清空session
request.session.clear()
request.session.flush() # sessionid会被删掉
删除 再次打印会返回None
del request.session[“name”]
print(request.session.get(“name”))
return HttpResponse()
Original: https://www.cnblogs.com/016681gzz/p/16414346.html
Author: 清~欢
Title: cookie和session
原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/642793/
转载文章受原作者版权保护。转载请注明原作者出处!