<div class="markdown-here-wrapper" data-md-url="https://i.cnblogs.com/EditPosts.aspx?postid=9962659">
<h1 id="cookie" style="margin: 20px 0px 10px; padding: 0px; font-weight: bold; color: black; font-size: 24px; border-bottom: 2px solid #aaaaaa;">cookie
<blockquote style="margin: 1.2em 0px; border-left: 4px solid #dddddd; padding: 0px 1em; color: #777777; quotes: none;">
<p style="margin: 0px 0px 1.2em !important; font-size: 16px; line-height: 1.75em; padding-right: 0.5em; padding-left: 0.5em;">Cookie 是在 HTTP 协议下,服务器或脚本可以维护客户工作站上信息的一种方式。Cookie 是由 Web 服务器保存在用户浏览器(客户端)上的小文本文件,它可以包含有关用户的信息。无论何时用户链接到服务器,Web 站点都可以访问 Cookie 信息
用户浏览器中写下的信息,用来存储用户当前的状态或该用户相关的信息,如是否已经登录。使用cookie的原因:HTTP协议是无状态的协议。一旦数据交换完毕,客户端与服务器端的连接就会关闭,再次交换数据需要建立新的连接。
ottom: 2px solid #aaaaaa;">在Django中使用cookie
一个用户登录的例子:用户登录后,在其浏览器中写入username键值对,并在其他页面判断是否有username
display: block; overflow: auto; overflow-x: auto; background: #f1efee; color: #68615e; text-size-adjust: none;">
arams" style="color: #df5320;">(views.View):
arams" style="color: #df5320;">(self,req,*args,**kwargs):
render(req,,{: })
<span class="hljs-function" style="color: #407ee7;"><span class="hljs-keyword" style="color: #6666ea;">def</span> <span class="hljs-title" style="color: #766e6b;">post</span><span class="hljs-p<a href="/tag/ara/" target="_blank" class="keywords">ara</a>ms" style="color: #df5320;">(self,**<a href="/tag/kwargs/" target="_blank" class="keywords">kwargs</a>)</span>:</span>
user = req.POST.get(<span class="hljs-string" style="color: #5ab738;">'user'</span>)
pwd = req.POST.get(<span class="hljs-string" style="color: #5ab738;">'pwd'</span>)
c = models.Administrator.objects.filter(username=user,password=pwd).count()
<span class="hljs-keyword" style="color: #6666ea;">if</span> c > <span class="hljs-number" style="color: #df5320;">0</span>:
rep = redirect(<span class="hljs-string" style="color: #5ab738;">'/index/'</span>)
newuser = user.encode(<span class="hljs-string" style="color: #5ab738;">'utf-8'</span>).decode(<span class="hljs-string" style="color: #5ab738;">'latin-1'</span>)
rep.set_cookie(<span class="hljs-string" style="color: #5ab738;">'username'</span>,newuser,max_age=<span class="hljs-number" style="color: #df5320;">10</span>)
<span class="hljs-keyword" style="color: #6666ea;">return</span> rep
<span class="hljs-keyword" style="color: #6666ea;">else</span>:
massage = <span class="hljs-string" style="color: #5ab738;">'<a href="/tag/yonghuming/" target="_blank" class="keywords">用户名</a>或<a href="/tag/mimap/" target="_blank" class="keywords">密码</a><a href="/tag/cuowu/" target="_blank" class="keywords">错误</a>'</span>
<span class="hljs-keyword" style="color: #6666ea;">return</span> render(req,{<span class="hljs-string" style="color: #5ab738;">'massage'</span>: massage})
<span class="hljs-function" style="color: #407ee7;"><span class="hljs-keyword" style="color: #6666ea;">def
<span class="hljs-title" style="color: #766e6b;">index<span class="hljs-params" style="color: #df5320;">(req):
username=req.COOKIES.get(<span class="hljs-string" style="color: #5ab738;">'username')
<span class="hljs-keyword" style="color: #6666ea;">if username:
newuser=username.encode(<span class="hljs-string" style="color: #5ab738;">'latin-1').decode(<span class="hljs-string" style="color: #5ab738;">'utf-8')
<span class="hljs-keyword" style="color: #6666ea;">return render(req,<span class="hljs-string" style="color: #5ab738;">"app1/index.html",{<span class="hljs-string" style="color: #5ab738;">"name": newuser})
<span class="hljs-keyword" style="color: #6666ea;">return redirect(<span class="hljs-string" style="color: #5ab738;">"/login")
<p style="margin: 0px 0px 1.2em !important; font-size: 16px; line-height: 1.75em; padding-right: 0.5em; padding-left: 0.5em;">查看set_cookie参数
display: block; overflow: auto; overflow-x: auto; background: #f1efee; color: #68615e; text-size-adjust: none;">
arams" style="color: #df5320;">(self,key,value=,max_age=None,expires=None,path=,domain=None,secure=False,httponly=False,samesite=None):
-
-
- 功能类似,如果不设置expires,函数会根据max_age自动设置expires,原因是ie浏览器需要expires
- 默认为’/‘,表示所有url
- 默认为当前域名
- 属性设置为true时,cookie只有在https协议下才能上传到服务器,而在http协议下是没法上传的
- 获取和修改
- 功能,此标志可防止cookie在跨站点请求中发送,从而防止CSRF攻击并使某些方法无法窃取会话cookie。None表示不适用此标志,还有Strict与Lax参数,具体查看goproject.com/en/2.1/ref/settings/#std:setting-SESSION_COOKIE_SAMESITE">https://docs.djangoproject.com/en/2.1/ref/settings/#std:setting-SESSION_COOKIE_SAMESITE
删除cookie
display: block; overflow: auto; overflow-x: auto; background: #f1efee; color: #68615e; text-size-adjust: none;">response.delete_cookie()
ottom: 2px solid #aaaaaa;">session
在这里我们可以叫它会话,既然是会话,那么就是一段时间的交流,交流的状态就需要保持着。对于cookie来说,数据或者用户相关信息是存放在客户的浏览器上,这样导致你的相关信息容易被暴露,让别人更容易进行cookie欺骗,如果可以将相关信息存放到服务器端,那么这种风险就会相对较低一些。使用的方式就是session客户端浏览器访问服务器的时候,服务器把客户端信息以某种形式记录在服务器上叫做session,当客户端浏览器再次访问时只需要从该Session中查找该客户的状态就可以了。客户端识别是哪一个用户的方式为为其分配一个SessionId。session内部也是通过cookie实现的。
ottom: 2px solid #aaaaaa;">在Django中使用session
登录认证的例子首先登录视图函数
c > :
req.session[] =
req.session[] = user
redirect()
:
massage = 用户名或密码错误'
render(req,{: massage})
用户是否登录的装饰器
display: block; overflow: auto; overflow-x: auto; background: #f1efee; color: #68615e; text-size-adjust: none;">
arams" style="color: #df5320;">(func):
arams" style="color: #df5320;">(request,**kwargs):
is_login = request.session.get()
is_login:
func(request,**kwargs)
:
redirect()
inner
函数,只需要为其添加auth装饰器即可这里发现,对于设置session和拿取session,和cookie的操作方式类似,那么它将设置的信息存储到了哪呢?答案是存到了数据库中在数据库中发现了一张diango_session的表,存储的信息为

ottom: 1px solid #aaaaaa;">session的其他方法
- 删除某条
- 删除所有
- 输出为dict_keys([‘is_login’,‘username’]),可for循环,不可以通过索引取值
- 输出dict_values([True,‘sfencs’]),同上
- 输出dict_items([(‘is_login’,True),(‘username’,‘sfencs’)]),同上
- 用户session的随机字符串
- 删除
- 用户session的随机字符串在数据库中是否存在
- 默认为两周。如果value是个整数,session会在些秒数后失效。如果value是个datatime或timedelta,session就会在这个时间后失效。如果value是0,用户关闭浏览器session就会失效。如果value是None,session会依赖全局session失效策略。
ottom: 1px solid #aaaaaa;">session的配置
display: block; overflow: auto; overflow-x: auto; background: #f1efee; color: #68615e; text-size-adjust: none;">SESSION_COOKIE_NAME =
gluLTEnKS5kZWNvZGUoJ3V0Zi04Jyk8YnI+ICAgICAgICBy
ZXR1cm4gcmVuZGVyKHJlcSwgImFwcDEvaW5kZXguaHRtbCIsIHsibmFtZSI6IG5ld3VzZXJ9KTxi
cj4gICAgcmV0dXJuIHJlZGlyZWN0KCIvbG9naW4iKTwvcHJlPjxwPmBgYDwvcD48cD7mn6XnnItz
ZXRfY29va2ll5Y+C5pWwPC9wPjxwPmBgYHB5dGhvbjwvcD48cHJlPmRlZiBzZXRfY29va2llKHNl
bGYsIGtleSwgdmFsdWU9JycsIG1heF9hZ2U9Tm9uZSwgZXhwaXJlcz1Ob25lLCBwYXRoPScvJyw8
YnI+ICAgICAgICAgICAgICAgZG9tYWluPU5vbmUsIHNlY3VyZT1GYWxzZSwgaHR0cG9ubHk9RmFs
c2UsIHNhbWVzaXRlPU5vbmUpOjwvcHJlPjxwPmBgYDwvcD48cD4qIGtleSDvvJrplK48L3A+PHA+
KiB2YWx1ZSDvvJrlgLw8L3A+PHA+KiBtYXhfYWdlIO+8mmNvb2tpZeeahOeUn+aViOaXtumXtDwv
cD48cD4qJm5ic3A7ZXhwaXJlcyDvvJpjb29raWXnmoTlhbfkvZPov4fmnJ/ml7bpl7Q8L3A+PHA+
5a6D5ZKMbWF4X2FnZeWKn+iDveexu+S8vO+8jOWmguaenOS4jeiuvue9rmV4cGlyZXPvvIzlh73m
lbDkvJrmoLnmja5tYXhfYWdl6Ieq5Yqo6K6+572uZXhwaXJlc++8jOWOn+WboOaYr2ll5rWP6KeI
5Zmo6ZyA6KaBZXhwaXJlczwvcD48cD4qJm5ic3A7cGF0aCDvvJrmjIflrprpgqPkuKp1cmzlj6/k
u6Xorr/pl67liLBjb29raWXvvIzpu5jorqTkuLonLyfvvIzooajnpLrmiYDmnIl1cmw8L3A+PHA+
KiBkb21haW4g77ya5oyH5a6a6YKj5Liq5Z+f5ZCN5Lul5Y+K5a6D5LiL6Z2i55qE5a2Q5Z+f5ZCN
5Y+v5Lul6K6/6Zeu6L+Z5LiqY29va2ll77yM6buY6K6k5Li65b2T5YmN5Z+f5ZCNPC9wPjxwPiog
c2VjdXJlIO+8mmh0dHBz5a6J5YWo55u45YWz77yM5b2Tc2VjdXJl5bGe5oCn6K6+572u5Li6dHJ1
ZeaXtu+8jGNvb2tpZeWPquacieWcqGh0dHBz5Y2P6K6u5LiL5omN6IO95LiK5Lyg5Yiw5pyN5Yqh
5Zmo77yM6ICM5ZyoaHR0cOWNj+iuruS4i+aYr+ayoeazleS4iuS8oOeahDwvcD48cD4qIGh0dHBv
bmx5IO+8mumZkOWItuWPquiDvemAmui/h2h0dHDkvKDovpPv
vixKU+aXoOazleWcqOS8oOi+k+S4
reiOt+WPluWSjOS/ruaUuTwvcD48cD4qIHNhbWVzaXRlIO+8muWlveWDj+aYrzIuMeS4reeahOaW
sOWKn+iDve+8jOatpOagh+W/l+WPr+mYsuatomNvb2tpZeWcqOi3qOermeeCueivt+axguS4reWP
kemAge+8jOS7juiAjOmYsuatokNTUkbmlLvlh7vlubbkvb/mn5Dkupvmlrnms5Xml6Dms5XnqoPl
j5bkvJror51jb29raWXjgIJOb25l6KGo56S65LiN6YCC55So5q2k5qCH5b+X77yM6L+Y5pyJU3Ry
aWN05LiOTGF45Y+C5pWw77yM5YW35L2T5p+l55yLPGEgaHJlZj0iaHR0cHM6Ly9kb2NzLmRqYW5n
b3Byb2plY3QuY29tL2VuLzIuMS9yZWYvc2V0d
gluZ3MvI3N0ZDpzZXR0aW5nLVNFU1NJT05fQ09P
S0lFX1NBTUVTSVRFIiB0YXJnZXQ9Il9ibGFuayIgZGF0YS1tY2UtaHJlZj0iaHR0cHM6Ly9kb2Nz
LmRqYW5nb3Byb2plY3QuY29tL2VuLzIuMS9yZWYvc2V0d
gluZ3MvI3N0ZDpzZXR0aW5nLVNFU1NJ
T05fQ09PS0lFX1NBTUVTSVRFIj5odHRwczovL2RvY3MuZGphbmdvcHJvamVjdC5jb20vZW4vMi4x
L3JlZi9zZXR0aW5ncy8jc3RkOnNldHRpbmctU0VTU0lPTl9DT09LSUVfU0FNRVNJVEU8L2E+PC9w
PjxwPiZuYnNwOzwvcD48cD7liKDpmaRjb29raWU8L3A+PHA+YGBgcHl0aG9uPC9wPjxwPnJlc3Bv
bnNlLmRlbGV0ZV9jb29raWUoPHNwYW4gY2xhc3M9ImhsanMtc3RyaW5nIj4na2V5Jyk8L3NwYW4+
PC9wPjxwPmBgYDwvcD48cD4jc2Vzc2lvbjwvcD48cD5zZXNzaW9u5pys5oSP5Li65byA5Lya77yM
5Lya6K6u77yM5Zyo6L+Z6YeM5oiR5Lus5Y+v5Lul5Y+r5a6D5Lya6K+d77yM5pei54S25piv5Lya
6K+d77yM6YKj5LmI5bCx5piv5LiA5q615pe26Ze055qE5Lqk5rWB77yM5Lqk5rWB55qE54q25oCB
5bCx6ZyA6KaB5L+d5oyB552A44CCPC9wPjxwPuWvueS6jmNvb2tpZeadpeivtO+8jOaVsOaNruaI
luiAheeUqOaIt+ebuOWFs+S/oeaBr+aYr+WtmOaUvuWcqOWuouaIt+eahOa1j+iniOWZqOS4iu+8
jOi/meagt+WvvOiHtOS9oOeahOebuOWFs+S/oeaBr+WuueaYk+iiq+aatOmcsu+8jOiuqeWIq+S6
uuabtOWuueaYk+i/m+ihjGNvb2tpZeasuumq
L++8jOWmguae
NowPr+S7peWwhuebuOWFs+S/oeaB
r+WtmOaUvuWIsOacjeWKoeWZqOerr++8jOmCo+S5iOi/meenjemjjumZqeWwseS8muebuOWvuei+
g+S9juS4gOS6m+OAguS9v+eUqOeahOaWueW8j+WwseaYr3Nlc3Npb248L3A+PHAgYWxpZ249Imxl
ZnQiPuWuouaIt+err+a1j+iniOWZqOiuv+mXruacjeWKoeWZqOeahOaXtuWAme+8jOacjeWKoeWZ
qOaKiuWuouaIt+err+S/oeaBr+S7peafkOenjeW9ouW8j+iusOW9leWcqOacjeWKoeWZqOS4iuWP
q+WBmnNlc3Npb27vvIzlvZPlrqLmiLfnq6/mtY/op4jlmajlho3mrKHorr/pl67ml7blj6
rpnIDo
poHku47or6VTZXNzaW9u5Lit5p+l5om+6K+l5a6i5oi355qE54q25oCB5bCx5Y+v5Lul5LqG44CC
5a6i5oi356uv6K+G5Yir5piv5ZOq5LiA5Liq55So5oi355qE5pa55byP5Li65Li65YW25YiG6YWN
5LiA5LiqU2Vzc2lvbklk44CCPC9wPjxwIGFsaWduPSJsZWZ0Ij5zZXNzaW9u5YaF6YOo5Lmf5piv
6YCa6L+HY29va2ll5a6e546w55qE44CCPC9wPjxwPiPlnKhEamFuZ2/kuK3kvb/nlKhzZXNzaW9u
PC9wPjxwPuS+neeEtuaYr+eZu+W9leiupOivgeeahOS+i+WtkDwvcD48cD7pppblhYjnmbvlvZXo
p4blm77lh73mlbA8L3A+PHA+YGBgcHl0aG9uPC9wPjxwcmU+Y2xhc3MgbG9naW4odmlld3MuVmll
dyk6PGJyPiAgICBkZWYgZ2V0KHNlbGYscmVxLCphcmdzLCoqa3dhcmdzKTo8YnI+ICAgICAgICBy
ZXR1cm4gcmVuZGVyKHJlcSwgImFwcDEvbG9naW4uaHRtbCIsIHsnbWFzc2FnZSc6ICcnfSk8YnI+
PGJyPiAgICBkZWYgcG9zdChzZWxmLHJlcSwqYXJncywqKmt3YXJncyk6PGJyPiAgICAgICAgdXNl
ciA9IHJlcS5QT1NULmdldCgndXNlcicpPGJyPiAgICAgICAgcHdkID0gcmVxLlBPU1QuZ2V0KCdw
d2QnKTxicj4gICAgICAgIGMgPSBtb2RlbHMuQWRtaW5pc3RyYXRvci5vYmplY3RzLmZpbHRlcih1
c2VybmFtZT11c2VyLCBwYXNzd29yZD1wd2QpLmNvdW50KCk8YnI+ICAgICAgICBwcmludChjKTxi
cj4gICAgICAgIGlmIGMgJmd0OyAwOjxicj4gICAgICAgICAgICByZXEuc2Vzc2lvblsnaXNfbG9n
aW4nXSA9IFRydWU8YnI+ICAgICAgICAgICAgcmVxLnNlc3Npb25bJ3VzZXJuYW1lJ10gPSB1c2Vy
PGJyPiAgICAgICAgICAgIHJldHVybiByZWRpcmVjdCgnL2luZGV4LycpPGJyPiAgICAgICAgZWxz
ZTo8YnI+ICAgICAgICAgICAgbWFzc2FnZSA9ICfnlKjmiLflkI3miJblr4bnoIHplJ
nor68nPGJy
PiAgICAgICAgcmV0dXJuIHJlbmRlcihyZXEsICJhcHAxL2xvZ2luLmh0bWwiLCB7J21hc3NhZ2Un
OiBtYXNzYWdlfSk8L3ByZT48cD5gYGA8L3A+PHA+55So5LqO5Yik5pat55So5oi35piv5ZCm55m7
5b2V55qE6KOF6aWw5ZmoPC9wPjxwPmBgYHB5dGhvbjwvcD48cHJlPmRlZiBhdXRoKGZ1bmMpOjxi
cj4gICAgZGVmI
glubmVyKHJl
cxvlc3QsICphcmdzLCAqKmt3YXJncyk6PGJyPiAgICAgICAgaXNf
bG9naW4gPSByZXF1ZXN0LnNlc3Npb24uZ2V0KCdpc19sb2dpbicpPGJyPiAgICAgICAgaWYgaXNf
bG9naW46PGJyPiAgICAgICAgICAgIHJldHVybiBmdW5jKHJl
cxvlc3QsICphcmdzLCAqKmt3YXJn
cyk8YnI+ICAgICAgICBlbHNlOjxicj4gICAgICAgICAgICByZXR1cm4gcmVkaXJlY3QoJy9sb2dp
bicpPGJyPiAgICByZXR1cm4gaW5uZXI8L3ByZT48cD5gYGA8L3A+PHA+6Iez5LqO5YW25LuW55m7
6ZmG5ZCO6L+b6KGM5aSE55CG55qE5Ye95pWw77yM5Y+q6ZyA6KaB5Li65YW25re75YqgYXV0aOij
hemlsOWZqOWNs+WPrzwvcD48cD7ov5nph4zlj5HnjrDvvIzlr7nkuo7orr7nva5zZXNzaW9u5ZKM
5ou/5Y+Wc2Vzc2lvbu+8jOWSjGNvb2tpZeeahOaTjeS9nOaWueW8j+exu+S8vO+8jOmCo+S5iOWu
g+Wwhuiuvue9rueahOS/oeaBr+WtmOWCqOWIsOS6huWTquWRou+8n+etlOahiOaYr+WtmOWIsOS6
huaVsOaNruW6k+S4rTwvcD48cD7lnKjmlbDmja7lupPkuK3lj5HnjrDkuobkuIDlvKBkaWFuZ29f
c2Vzc2lvbueahOihqO+8jOWtmOWCqOeahOS/oeaBr+S4ujwvcD48cD48aW1nIHNyYz0iaHR0cHM6
Ly9pbWcyMDE4LmNuYmxvZ3MuY29tL2Jsb2cvMTQ2OTAxNS8yMDE4MTEvMTQ2OTAxNS0yMDE4MTEx
NTE0MjYyMDIxMi0xNTI1NDEwODE2LnBuZyIgYWx0PSIiIGRhdGEtbWNlLXNyYz0iaHR0cHM6Ly9p
bWcyMDE4LmNuYmxvZ3MuY29tL2Jsb2cvMTQ2OTAxNS8yMDE4MTEvMTQ2OTAxNS0yMDE4MTExNTE0
MjYyMDIxMi0xNTI1NDEwODE2LnBuZyI+PC9wPjxwPui/memHjOeahOS/oeaBr+W6lOivpeaYr+eU
qOafkOenjeWKoOWvhueul+azleWKoOWvhuS6hixleHBpcmVfZGF0YeS4unNlc3Npb27lrZjlnKjm
iKrmraLml7bpl7Q8L3A+PHA+IyMjc2Vzc2lvbueahOWFtuS7luaWueazlTwvcD48cD4qJm5ic3A7
cmVxdWVzdC5zZXNzaW9uLnNldGRlZmF1bHQoJ2sxJywxMjMpICZuYnNwO+WtmOWcqOWImeS4jeiu
vue9rjwvcD48cD4qJm5ic3A7ZGVsIHJl
cxvlc3Quc2Vzc2lvblsnazEnXSZuYnNwOyDliKDpmaTm
n5DmnaE8L3A+PHA+KiZuYnNwO3Jl
cxvlc3Quc2Vzc2lvbi5jbGVhcigpJm5ic3A7Jm5ic3A7Jm5i
c3A7IOWIoOmZpOaJgOaciTwvcD48cD4qJm5ic3A7cmVxdWVzdC5zZXNzaW9uLmtleXMoKSZuYnNw
OyDojrflvpfmiYDmnInnmoRrZXnvvIzovpPlh7rkuLpkaWN0X2tleXMoWydpc19sb2dpbicsICd1
c2VybmFtZSddKe+8jOWPr2ZvcuW+queOr++8jOS4jeWPr+S7pemAmui/h+e0ouW8leWPluWAvDwv
cD48cD4qJm5ic3A7cmVxdWVzdC5zZXNzaW9uLnZhbHVlcygpIOiOt+W+l+aJgOacieeahOWAvO+8
jOi+k+WHumRpY3RfdmFsdWVzKFtUcnVlLCAnc2ZlbmNzJ10p77yM5ZCM5LiKPC9wPjxwPiombmJz
cDtyZXF1ZXN0LnNlc3Npb24uaXRlbXMoKSZuYnNwOyDojrflvpfmiYDmnInplK7lgLzvvIzovpPl
h7pkaWN0X2l0ZW1zKFsoJ2lzX2xvZ2luJywgVHJ1ZSksICgndXNlcm5hbWUnLCAnc2ZlbmNzJyld
Ke+8jOWQjOS4ijwvcD48cD4qJm5ic3A7cmVxdWVzdC5zZXNzaW9uLnNlc3Npb25fa2V5IOiOt+W+
l+eUqOaIt3Nlc3Npb27nmoTpmo/mnLrlrZfnrKbkuLI8L3A+PHA+KiZuYnNwO3Jl
cxvlc3Quc2Vz
c2lvbi5jbGVhcl9leHBpcmVkKCkmbmJzcDvlsIbmiYDmnIlTZXNzaW9u5aSx5pWI5pel5pyf5bCP
5LqO5b2T5YmN5pel5pyf55qE5pWw5o2u5Yig6ZmkPC9wPjxwPiombmJzcDtyZXF1ZXN0LnNlc3Np
b24uZXhpc3RzKCJzZXNzaW9uX2tleSIpJm5ic3A75qOA5p+l55So5oi3c2Vzc2lvbueahOmaj+ac
uuWtl+espuS4suWcqOaVsOaNruW6k+S4reaYr+WQpuWtmOWcqDwvcD48cD4qJm5ic3A7cmVxdWVz
dC5zZXNzaW9uLnNldF9leHBpcnkodmFsdWUpJm5ic3A76Ieq5bex6K6+572u5LqG6L+H5pyf5pe2
6Ze077yM6buY6K6k5Li65Lik5ZGo44CCPC9wPjxwPuWmguaenHZhbHVl5piv5Liq5pW05pWw77yM
c2Vzc2lvbuS8muWcqOS6m+enkuaVsOWQjuWkseaViOOAgjwvcD48cD7lpoLmnpx2YWx1ZeaYr+S4
qmRhdGF0aW1l5oiWdGltZWRlbHRh77yMc2Vzc2lvbuWwseS8muWcqOi/meS4quaXtumXtOWQjuWk
seaViOOAgjwvcD48cD7lpoLmnpx2YWx1ZeaYrzAs55So5oi35YWz6Zet5rWP6KeI5Zmoc2Vzc2lv
buWwseS8muWkseaViOOAgjwvcD48cD7lpoLmnpx2YWx1ZeaYr05vbmUsc2Vzc2lvbuS8muS+nei1
luWFqOWxgHNlc3Npb27lpLHmlYjnrZbnlaXjgII8L3A+PHA+PGJyIGRhdGEtbWNlLWJvZ3VzPSIx
Ij48L3A+PHA+IyMjc2Vzc2lvbueahOmFjee9rjwvcD48cD5gYGBweXRob248L3A+PHA+U0VTU0lP
Tl9DT09LSUVfTkFNRSDvvJ0gInNlc3Npb25pZCImbmJzcDsgJm5ic3A7IyDlrZjlnKjmtY/op4jl
majnmoRjb29raWXplK7lkI08L3A+PHA+U0VTU0lPTl9DT09LSUVfUEFUSCDvvJ0gIi8iJm5ic3A7
ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsg
I3Nlc3Npb27nmoRjb29raWXnmoTkvb/nlKjot6/lvoQ8L3A+PHA+U0VTU0lPTl9DT09LSUVfRE9N
QUlOID0gTm9uZSZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsjIFNlc3Npb27nmoRj
b29raWXkv53lrZjnmoTln5/lkI3vvIjpu5jorqTvvIk8YnI+U0VTU0lPTl9DT09LSUVfU0VDVVJF
ID0gRmFsc2UmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7IyDmmK/lkKZIdHRwc+S8
oOi+k2Nvb2tpZe+8iOm7mOiupO+8iTxicj5TRVNTSU9OX0NPT0tJRV9IVFRQT05MWSA9IFRydWUm
bmJzcDsgJm5ic3A7ICZuYnNwOyAjIOaYr+WQplNlc3Npb27nmoRjb29raWXlj6
rmlK/mjIFodHRw
5Lyg6L6T77yI6buY6K6k77yJPGJyPlNFU1NJT05fQ09PS0lFX0FHRSA9IDEyMDk2M
dambmJzcDsg
Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICMgU2Vzc2lvbueahGNvb2tpZeWkseaViOaXpeac
n++8iDLlkajvvInvvIjpu5jorqTvvIk8YnI+U0VTU0lPTl9FWFBJUkVfQVRfQlJPV1NFUl9DTE9T
RSA9IEZhbHNlJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7IyDmmK/lkKblhbPpl63mtY/op4jl
majkvb/lvpdTZXNzaW9u6L+H5pyf77yI6buY6K6k77yJPGJyPlNFU1NJT05fU0FWRV9FVkVSWV9S
RVFVRVNUID0gRmFsc2UmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICMg5piv5ZCm
5q+P5qyh6K+35rGC6YO95L+d5a2YU2Vzc2lvbu+8jOm7mOiupOS/ruaUueS5i+WQjuaJjeS/neWt
mO+8iOm7mOiupO+8iTwvcD48cD5gYGA8L3A+PHA+PGJyIGRhdGEtbWNlLWJvZ3VzPSIxIj48L3A+
PHA+PGJyIGRhdGEtbWNlLWJvZ3VzPSIxIj48L3A+PHA+PGJyIGRhdGEtbWNlLWJvZ3VzPSIxIj48
L3A+PHA+PGJyIGRhdGEtbWNlLWJvZ3VzPSIxIj48L3A+PHA+PGJyIGRhdGEtbWNlLWJvZ3VzPSIx
Ij48L3A+PHA+Jm5ic3A7PC9wPg==">
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。