HTTP协议的无状态保存:
指的是同一个浏览器给服务器发两次请求,
服务器不知道第二次请求之前是否还发过请求。
每一次访问服务器都认为是新请求

cookie:

SRE实战 互联网时代守护先锋,助力企业售后服务体系运筹帷幄!一键直达领取阿里云限量特价优惠。

具体一个浏览器针对一个服务器存储的key-value

有过期时间,可调,默认是两周

问题来了,是针对什么存储的呢?ip+port 还是域名?

 Django--cookie 随笔

先看上门图片中的场景,理解好三个问题,就理解了cookie机制:

1、在cookie有效期内,哪怕图中A电脑关机在开机,A电脑的浏览器访问域名y1还是会带这个cookie{is_login:true}
2、在cookie有效期内,A电脑的同一个浏览器访问域名y2不会带上域名y1的cookie,而是y2的cookie
2、如果是新的浏览器,访问这个服务器,会带一个空cookie

 

服务器端cookie的设置与读取:

1、设置cookie

def login(request):
login_success=1

if login_success:
#在响应体设置cookie
response=HttpResponse("登录成功") # render,redirect等也可以,都是继承的HttpResponse
response.set_cookie("is_login", True)
return response

2、读取cookie

def index(request):
cookie = request.COOKIES
# request.COOKIES.get("k","")获取不到默认为""
is_login = request.COOKIES.get("is_login")
if is_login:
#已登录
else:
#跳转到登录页面

3、删除cookie:注销的时候能用到

response.delete_cookie("cookie_key",path="/",domain=name)

4、设置cookie的参数

def set_cookie(self,
key, #键
value='', #值
max_age=None, #超时时间 cookie需要延续的时间(以秒为单位)如果参数是None,这个cookie会延续到浏览器关闭为止。
expires=None, #超时时间 expires默认None ,cookie失效的实际日期/时间。
#设置方式datetime.datetime(year=2018,month=5,day=29,hour=14)
path='/', #Cookie生效的路径,浏览器只会把cookie回传给带有该路径的页面,
#这样可以避免将cookie传给站点中的其他的应用。
#/ 表示根路径,根路径的cookie可以被任何url的视图函数获取
            
domain=None, #Cookie生效的域名
#你可用这个参数来构造一个跨站cookie。
#如, domain=".example.com"
#所构造的cookie对下面这些站点都是可读的:
#www.example.com 、 www2.example.com 和an.other.sub.domain.example.com
#如果该参数设置为 None ,cookie只能由设置它的站点读取。
secure=False, #如果设置为 True ,浏览器将通过HTTPS来回传cookie。
httponly=False #只能http协议传输,无法被JavaScript获取
#(不是绝对,底层抓包可以获取到也可以被覆盖
)

 

扫码关注我们
微信号:SRE实战
拒绝背锅 运筹帷幄