day36 cookiessession
区别
1.cookies在客户端,session在服务器端
2.联系,session是人为建立的,通过cookies构建出来的,每次用户来的时候给他发一段token,下次再来的时候如果还是上次的token就认为还是上次的
分页
XSS跨站脚本攻击
csrf跨站请求伪造,用于post ,工作原理
AJAX
iframe
xmlhttprequest
jquery
$.ajax({
url:
type:
data:
dataType:
success:
error:
})
AJAX上传文件
1 <!DOCTYPE html> 2 <html> 3 <headlang="en"> 4 <metacharset="UTF-8"> 5 <title></title> 6 </head> 7 <body> 8 <inputtype="file"id="img" /> 9 <inputtype="button"onclick="UploadFile();" /> 10 <script> 11 functionUploadFile(){12 varfileObj=$("#img")[0].files[0];13 varform= newFormData();14 form.append("k1","v1");15 form.append("fff", fileObj);16 17 $.ajax({18 type:'POST',19 url:'/index',20 data: form,21 processData:false,//tell jQuery not to process the data 22 contentType:false,//tell jQuery not to set contentType 23 success:function(arg){24 console.log(arg);25 }26 })27 }28 </script> 29 </body> 30 </html> 31 32 HTML - jQuery
ajax上传文件
2017-7-8 15:45:30
#! bin/usr/evn python#-*- coding:utf-8 -*- importtornado.webimporttornado.ioloopclassIndexhandler(tornado.web.RequestHandler):defget(self):self.set_cookie('k1','999')ret=self.cookiesprint(ret)self.render('index.html')settings={"template_path":'views'} app=tornado.web.Application({(r'/index',Indexhandler), },**settings)if __name__=='__main__':app.listen('8888')tornado.ioloop.IOLoop.instance().start()
cookies
<!DOCTYPE html> <htmllang="en"> <head><metacharset="UTF-8"><title>Title</title> </head> <body><divstyle="color: #c03945;">cookies</div><script>functionsetCookie(name,value,expires){varcurrent_date= newDate();current_date.setSeconds(current_date.getSeconds()+ 5);document.cookie=name+ "="+value+";expires=" +current_date.toUTCString(); }</script> </body> </html>
index.html
$.cookie('k1','666',{expires:7})
//这是保存七天的var current_data=new Data();current_data.setSeconds(current_data.getSeconds()+6)$.cookie('k1','666',{expires:current_data})
// 这是保存6秒的
setcookie by day or sec
(2017-7-9 10:32:00)
#! bin/usr/evn python#-*- coding:utf-8 -*- importtornado.ioloopimporttornado.web container={}classIndexhandler(tornado.web.RequestHandler):defget(self):if self.get_argument('u',None) in ['alex','eric']:importhashlib,timeobj=hashlib.md5()obj.update(bytes(str(time.time()),encoding='utf8'))random_str=obj.hexdigest()container[random_str]={}container[random_str]['k1']=666container[random_str]['k2']=self.get_argument('u',None)+'parents'container[random_str]['is_login']=Trueself.set_cookie('sess',random_str)print(container)else:self.write('please login')classManagerhandler(tornado.web.RequestHandler):def get(self, *args, **kwargs):random_str=self.get_cookie('sess')current_uinfo=container.get(random_str,None)if notcurrent_uinfo:self.redirect('/index')else:if current_uinfo.get('is_login',None):temp='%s--%s' %(current_uinfo.get('k1',''),current_uinfo.get('k2',''))self.write(temp)else:self.redirect('/index')settings={'template_path':'views'}app=tornado.web.Application([(r'/index',Indexhandler),(r'/manager',Managerhandler), ])if __name__=='__main__':app.listen(8888)tornado.ioloop.IOLoop.instance().start()
session1
(2017-7-10 15:44:33)
#! bin/usr/evn python#-*- coding:utf-8 -*- importtornado.ioloopimporttornado.webimporthashlib, timecontainer={}classSession:def __init__(self,handler):self.handler=handlerself.random_str=Nonedef __generate_random_str(self):obj=hashlib.md5()obj.update(bytes(str(time.time()),encoding='utf8'))random_str=obj.hexdigest()returnrandom_strdefset_value(self,key,value):if notself.random_str:random_str=self.handler.get_cookie('wolala')if notrandom_str:#random_str不存在就生成一个#{'b7a99d741b7bd1ba2c1b64282bc93711': {'name': 'alex', 'is_login': True}}random_str=self.__generate_random_str()container[random_str]={}else:#random_str存在就if random_str incontainer.keys():passelse:random_str=self.__generate_random_str()container[random_str]={}self.random_str=random_strcontainer[self.random_str][key]=valueself.handler.set_cookie('wolala',self.random_str)defget_value(self,key):random_str=self.handler.get_cookie('wolala')print('random_str',random_str)if notrandom_str:returnNoneuser_info_dict=container.get(random_str,None)if notuser_info_dict:returnNonevalue=user_info_dict.get(key,None)returnvalueclassIndexhandler(tornado.web.RequestHandler):defget(self):if self.get_argument('u',None) in ['alex','eric']:s=Session(self)s.set_value('is_login',True)s.set_value('name',self.get_argument('u',None))print(container)self.write('has logined')else:self.write('please login')classManagerhandler(tornado.web.RequestHandler):defget(self):s=Session(self)val=s.get_value('is_login')#print(1, val,s.get_value('name'))ifval :self.write(s.get_value('name'))else:self.write('failure')settings={'template_path':'views'}app=tornado.web.Application([(r'/index',Indexhandler),(r'/manager',Managerhandler), ])if __name__=='__main__':app.listen(8888)tornado.ioloop.IOLoop.instance().start()
session3
2017-7-10 16:18:00
#! bin/usr/evn python#-*- coding:utf-8 -*- importtornado.ioloopimporttornado.webimporthashlib, timecontainer={}classBasehandler(tornado.web.RequestHandler):def __init__(self):self.session=Session(self)classSession:def __init__(self,handler):self.handler=handlerself.random_str=Nonedef __generate_random_str(self):obj=hashlib.md5()obj.update(bytes(str(time.time()),encoding='utf8'))random_str=obj.hexdigest()returnrandom_strdef __setitem__(self, key, value):random_str=self.handler.get_cookie('wolala')if notrandom_str:#random_str不存在就生成一个#{'b7a99d741b7bd1ba2c1b64282bc93711': {'name': 'alex', 'is_login': True}}random_str=self.__generate_random_str()container[random_str]={}else:#random_str存在就if random_str incontainer.keys():passelse:random_str=self.__generate_random_str()container[random_str]={}self.random_str=random_strcontainer[self.random_str][key]=valueself.handler.set_cookie('wolala',self.random_str)def __getitem__(self,key):random_str=self.handler.get_cookie('wolala')print('random_str',random_str)if notrandom_str:returnNoneuser_info_dict=container.get(random_str,None)if notuser_info_dict:returnNonevalue=user_info_dict.get(key,None)returnvalueclassIndexhandler(Basehandler):defget(self):if self.get_argument('u',None) in ['alex','eric']:self.session['is_login']=Trueself.session['name']=self.get_argument('u',None)print(container)self.write('has logined')else:self.write('please login')classManagerhandler(Basehandler):defget(self):val=self.session['is_login']ifval :self.write(self.session['name'])else:self.write('failure')settings={'template_path':'views'}app=tornado.web.Application([(r'/index',Indexhandler),(r'/manager',Managerhandler), ])if __name__=='__main__':app.listen(8888)tornado.ioloop.IOLoop.instance().start()
完整版session
更正session(2017-7-12 14:10:22)
#! bin/usr/evn python#-*- coding:utf-8 -*- importtornado.ioloopimporttornado.webimporthashlib, timecontainer={}classBasehandler(tornado.web.RequestHandler):definitialize(self):self.session=Session(self)classSession:def __init__(self,handler):self.handler=handlerself.random_str=Nonedef __generate_random_str(self):obj=hashlib.md5()obj.update(bytes(str(time.time()),encoding='utf8'))random_str=obj.hexdigest()returnrandom_strdef __setitem__(self, key, value):random_str=self.handler.get_cookie('wolala')if notrandom_str:#random_str不存在就生成一个#{'b7a99d741b7bd1ba2c1b64282bc93711': {'name': 'alex', 'is_login': True}}random_str=self.__generate_random_str()container[random_str]={}else:#random_str存在就if random_str incontainer.keys():passelse:random_str=self.__generate_random_str()container[random_str]={}self.random_str=random_strcontainer[self.random_str][key]=valueself.handler.set_cookie('wolala',self.random_str)def __getitem__(self,key):random_str=self.handler.get_cookie('wolala')if notrandom_str:returnNoneuser_info_dict=container.get(random_str,None)if notuser_info_dict:returnNonevalue=user_info_dict.get(key,None)returnvalueclassIndexhandler(Basehandler):defget(self):print('get')if self.get_argument('u',None) in ['alex','eric']:self.session['is_login']=Trueprint('islogin')self.session['name']=self.get_argument('u',None)print(container)self.write('has logined')else:self.write('please login')classManagerhandler(Basehandler):defget(self):val=self.session['is_login']ifval :self.write(self.session['name'])else:self.write('failure')settings={'template_path':'views'}app=tornado.web.Application([(r'/index',Indexhandler),(r'/manager',Managerhandler), ])if __name__=='__main__':app.listen(8888)tornado.ioloop.IOLoop.instance().start()
session
验证码(2017-7-12 14:10:05)
要install pillow module
并且把checkcode.py 放在里面
#! bin/usr/evn python#-*- coding:utf-8 -*- importtornado.ioloopimporttornado.webimporthashlib, timecontainer={}classBasehandler(tornado.web.RequestHandler):definitialize(self):self.session=Session(self)classSession:def __init__(self,handler):self.handler=handlerself.random_str=Nonedef __generate_random_str(self):obj=hashlib.md5()obj.update(bytes(str(time.time()),encoding='utf8'))random_str=obj.hexdigest()returnrandom_strdef __setitem__(self, key, value):random_str=self.handler.get_cookie('wolala')if notrandom_str:#random_str不存在就生成一个#{'b7a99d741b7bd1ba2c1b64282bc93711': {'name': 'alex', 'is_login': True}}random_str=self.__generate_random_str()container[random_str]={}else:#random_str存在就if random_str incontainer.keys():passelse:random_str=self.__generate_random_str()container[random_str]={}self.random_str=random_strcontainer[self.random_str][key]=valueself.handler.set_cookie('wolala',self.random_str)def __getitem__(self,key):random_str=self.handler.get_cookie('wolala')print('random_str',random_str)if notrandom_str:returnNoneuser_info_dict=container.get(random_str,None)if notuser_info_dict:returnNonevalue=user_info_dict.get(key,None)returnvalueclassIndexhandler(Basehandler):defget(self):if self.get_argument('u',None) in ['alex','eric']:self.session['is_login']=Trueself.session['name']=self.get_argument('u',None)print(container)self.write('has logined')else:self.write('please login')classManagerhandler(Basehandler):defget(self):val=self.session['is_login']ifval :self.write(self.session['name'])else:self.write('failure')classLoginhandler(Basehandler):defget(self):self.render('login.html',statu='')def post(self, *args, **kwargs):user=self.get_argument('user',None)pwd=self.get_argument('password',None)security=self.get_argument('security',None)print(security,'secu')checkcode=self.session['security']if security.upper()==checkcode.upper():self.write('correct')else:self.render('login.html',statu='wrong code')classCheckcodehandler(Basehandler):def get(self, *args, **kwargs):importioimportcheck_codemstream=io.BytesIO()img,code=check_code.create_validate_code()img.save(mstream,'GIF')self.write(mstream.getvalue())self.session['security']=codeprint(container)settings={'template_path':'views'}app=tornado.web.Application([(r'/index',Indexhandler),(r'/manager',Managerhandler),(r'/login',Loginhandler),(r'/check_code',Checkcodehandler),],**settings)if __name__=='__main__':app.listen(8888)tornado.ioloop.IOLoop.instance().start()
scode
<!DOCTYPE html> <htmllang="en"> <head><metacharset="UTF-8"><title>Title</title> </head> <body><formaction="/login"method="post"><p><inputname='user'type="text"placeholder="user"> </p><p><inputname="password"type="text"placeholder="password"> </p><p><inputname="security"type="text"placeholder="security"><imgsrc="/check_code"onclick="Changecode();"id="imgcode"></p><inputtype="submit"value="submit"><span>{{statu}}</span></form> <script>functionChangecode() {varcode=document.getElementById('imgcode');code.src+='?'}</script> </body> </html>
login.html
Ajax跨域请求(2017-7-13 11:16:04)
<!DOCTYPE html> <htmllang="en"> <head><metacharset="UTF-8"><title>Title</title> </head> <body><formaction="/xsrf"method="post"><span>{% raw xsrf_form_html() %}</span><!--这样可以隐藏这个数据--></form><buttonvalue="aj xsrf"onclick="Xsrf();">submit</button><inputtype="submit"value="submittt"> <scriptsrc="/statics/jquery-3.1.1.js"></script> <script>functiongetCookie(name) {varr=document.cookie.match("\\b" +name+ "=([^;]*)\\b");returnr?r[1] : undefined; }functionXsrf() {varnid=getCookie('_xsrf');$.post({url:'/xsrf',data:{'k1':'v1','_xsrf':nid},success:function(callback) {//发送成功后自动执行内容//callback会返回服务器write的数据 console.log(callback)}})}</script> </body> </html>
xsrf.html
#! bin/usr/evn python#-*- coding:utf-8 -*- importtornado.ioloopimporttornado.webimporthashlib, timecontainer={}classBasehandler(tornado.web.RequestHandler):definitialize(self):self.session=Session(self)classSession:def __init__(self,handler):self.handler=handlerself.random_str=Nonedef __generate_random_str(self):obj=hashlib.md5()obj.update(bytes(str(time.time()),encoding='utf8'))random_str=obj.hexdigest()returnrandom_strdef __setitem__(self, key, value):random_str=self.handler.get_cookie('wolala')if notrandom_str:#random_str不存在就生成一个#{'b7a99d741b7bd1ba2c1b64282bc93711': {'name': 'alex', 'is_login': True}}random_str=self.__generate_random_str()container[random_str]={}else:#random_str存在就if random_str incontainer.keys():passelse:random_str=self.__generate_random_str()container[random_str]={}self.random_str=random_strcontainer[self.random_str][key]=valueself.handler.set_cookie('wolala',self.random_str)def __getitem__(self,key):random_str=self.handler.get_cookie('wolala')print('random_str',random_str)if notrandom_str:returnNoneuser_info_dict=container.get(random_str,None)if notuser_info_dict:returnNonevalue=user_info_dict.get(key,None)returnvalueclassIndexhandler(Basehandler):defget(self):if self.get_argument('u',None) in ['alex','eric']:self.session['is_login']=Trueself.session['name']=self.get_argument('u',None)print(container)self.write('has logined')else:self.write('please login')classManagerhandler(Basehandler):defget(self):val=self.session['is_login']ifval :self.write(self.session['name'])else:self.write('failure')classLoginhandler(Basehandler):defget(self):self.render('login.html',statu='')def post(self, *args, **kwargs):user=self.get_argument('user',None)pwd=self.get_argument('password',None)security=self.get_argument('security',None)print(security,'secu')checkcode=self.session['security']if security.upper()==checkcode.upper():self.write('correct')else:self.render('login.html',statu='wrong code')classCheckcodehandler(Basehandler):def get(self, *args, **kwargs):importioimportcheck_codemstream=io.BytesIO()img,code=check_code.create_validate_code()img.save(mstream,'GIF')self.write(mstream.getvalue())self.session['security']=codeprint(container)#给他写一个类 classCsrfhandler(Basehandler):defget(self):self.render('xsrf.html')def post(self, *args, **kwargs):#只能用post的方式提交self.write('seeing directry')settings={'template_path':'views','xsrf_cookies':True ,#'static_path':'statics','static_url_prefix':'/statics/'}app=tornado.web.Application([(r'/index',Indexhandler),(r'/manager',Managerhandler),(r'/login',Loginhandler),(r'/check_code',Checkcodehandler),(r'/xsrf',Csrfhandler),#在这里要加这个 ],**settings)if __name__=='__main__':app.listen(8888)tornado.ioloop.IOLoop.instance().start()
socde
上传文件(2017-7-14 15:20:54)
#! bin/usr/evn python#-*- coding:utf-8 -*- importtornado.webimporttornado.ioloopclassIndexhandler(tornado.web.RequestHandler):defget(self):self.set_cookie('k1','999')ret=self.cookiesprint(ret)self.render('ajaxindex.html')def post(self, *args, **kwargs):print(self.get_argument('user'))print(self.get_arguments('fa'))self.write('ssssssssss')file_data=self.request.files["fff"]print(file_data)for f infile_data:file_name=f['filename']with open(file_name,'wb') as fw:fw.write(f['body'])settings={"template_path":'views',"static_url_prefix":'/statics/',} app=tornado.web.Application({(r'/index',Indexhandler), },**settings)if __name__=='__main__':app.listen('8888')tornado.ioloop.IOLoop.instance().start()
uploadfile
<!DOCTYPE html> <htmllang="en"> <head><metacharset="UTF-8"><title>Title</title> </head> <body><formaction="/index"method="POST"enctype="multipart/form-data"><!--发送文件要写enctype="multipart/form-data"--><inputtype="text"name="user"><h3>hobbit</h3><inputname="fa"value="1"type="checkbox">basketball<inputname="fa"value="2"type="checkbox">football<inputname="fa"value="3"type="checkbox">glassball<inputtype="submit"value="sub"><inputtype="file"name="fff"></form><p><inputtype="button"onclick="Xmlsendrequest();"value="ajaxrequest"></p><scripttype="text/javascript"src="/statics/jquery-3.1.1.js"></script><script>functionXmlsendrequest() {$.ajax({})}</script> </body> </html>
ajaxhtml
iframe兼容性更好的上传文件(2017-7-14 16:07:32)
#! bin/usr/evn python#-*- coding:utf-8 -*- importtornado.webimporttornado.ioloopclassIndexhandler(tornado.web.RequestHandler):defget(self):self.render('iframeupload.html')def post(self, *args, **kwargs):file_data=self.request.files["fff"]print(file_data)for f infile_data:file_name=f['filename']with open(file_name,'wb') as fw:fw.write(f['body'])settings={"template_path":'views',"static_url_prefix":'/statics/',#'static_path':'statics' } app=tornado.web.Application({(r'/index',Indexhandler), },**settings)if __name__=='__main__':app.listen('8888')tornado.ioloop.IOLoop.instance().start()
View Code
<!DOCTYPE html> <htmllang="en"> <head><metacharset="UTF-8"><title>Title</title><style>.hide{display:none;}</style></head> <body><formid="my_form"name="form"action="/index"method="POST"enctype="multipart/form-data" ><divid="main"><inputname="fff"id="my_file"type="file" /><inputtype="button"name="action"value="Upload"onclick="redirect()"/><iframeid='my_iframe'name='my_iframe'src=""class="hide"></iframe></div></form><scriptsrc="/statics/jquery-3.1.1.js"></script><script>functionredirect(){//document.getElementById('my_iframe').onload = Testt; document.getElementById('my_form').target= 'my_iframe';document.getElementById('my_form').submit();}//function Testt(ths){//var t = $("#my_iframe").contents().find("body").text();//console.log(t);//}</script> </body> </html>
html
转载于:https://www.cnblogs.com/ezway/p/7137029.html
day36 cookiessession相关推荐
- day36 excel入门
day36 excel入门 1.创建与保护 一.创建工作簿.工作表 大家是否清楚工作簿.工作表.单元格的关系. 我们常说的表格文件其实就是工作簿****. 工作表就是我们下方切换的N个活动页,创建一个 ...
- 千峰JAVA逆战班Day36
Day36 *二阶段介绍:通过前端网页,将我们后台写的逻辑代码和数据,去供别人使用 *数据库(有服务端和客户端 ): I. 可以用txt等文件存储,为什么还需要数据库? 因为使用数据库存储会更 ...
- day36 10-Hibernate中的事务:解决丢失更新
演示hibernate如何产生丢失更新的 丢失更新是怎么玩的?首先两个事务先都把它查出来. A事务里面去修改的数据没了,被B事务覆盖掉了.这是被B事务提交覆盖,B事务回滚也能覆盖.这就是丢失更新的效果 ...
- day36 03-Hibernate检索方式:排序、参数绑定、投影查询
排序之后是分页查询. 检索单个对象 还可以进行参数的绑定. HQL的参数绑定,按参数名称绑定或者是按参数位置绑定. 还可以用投影的操作,投影的操作是只查询这里面的某几个属性.只查询某一个属性,查询多个 ...
- day36 python学习gevent io 多路复用 socketserver *****
---恢复内容开始--- gevent 1.切换+保存状态 2.检测单线程下任务的IO,实现遇到IO自动切换 Gevent 是一个第三方库,可以轻松通过gevent实现并发同步或异步编程,在geven ...
- 线程事件--day36
""" ----线程事件---- 是用于协调多个线程工作的,当一个线程要执行某个操作,需要获取另一个线程的状态 你要给别人打电话 必须明确知道对方手机买好了 作为客户端 ...
- day36 fullstack gevent模块 IO阻塞和非阻塞 IO多路复用 异步IO介绍 其他的补充
按时打算发放飞 转载于:https://www.cnblogs.com/number1994/p/8250564.html
- day36 Pyhton 网络编程03
一.内容回顾 socket通常也称作"套接字",用于描述IP地址和端口,是一个通信链的句柄,应用程序通常通过"套接字"向网络发出请求或者应答网络请求. sock ...
- python 全栈开发,Day36(作业讲解(大文件下载以及进度条展示),socket的更多方法介绍,验证客户端链接的合法性hmac,socketserver)...
先来回顾一下昨天的内容 黏包现象 粘包现象的成因 : tcp协议的特点 面向流的 为了保证可靠传输 所以有很多优化的机制 无边界 所有在连接建立的基础上传递的数据之间没有界限 收发消息很有可能不完全 ...
最新文章
- 添物 不花钱学计算机及编程(预备篇)— 编译原理
- NYOJ 70 阶乘因式分解(二)
- android app通过Geth RPC接口实现远程调用
- rails开发随手记-0
- matlab 矢量化,matlab矢量化编程简要
- NASA、西门子和大众都在用的 IoT 协议可遭滥用
- leetcode·动态规划
- 计数器matlab,MATLAB中的几个时间计数器
- 树莓派系列(一):树莓派介绍
- 2017软件测试考试分值,2017年英语四级分值分配「最新」
- 人月神教beta阶段冲刺报告集合
- E4A(易安卓)学习——第一个APP
- matlab泊松分布参数,MATLAB如何使用poisspdf函数计算泊松分布的概率
- Apache Hudi调研小记
- Android简单的计步器应用实现
- 校招选择题汇总【图形推理(1)】含答案解析
- [美文]-- 为何毕业三年后的差距这么大?
- jieba.cut 和jieba.posseg
- 构建万物互联的智能世界,华为为何选择了智能体?
- 【嵌入式数据库原理与应用笔记】介绍,系统结构