区别

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相关推荐

  1. day36 excel入门

    day36 excel入门 1.创建与保护 一.创建工作簿.工作表 大家是否清楚工作簿.工作表.单元格的关系. 我们常说的表格文件其实就是工作簿****. 工作表就是我们下方切换的N个活动页,创建一个 ...

  2. 千峰JAVA逆战班Day36

    Day36 *二阶段介绍:通过前端网页,将我们后台写的逻辑代码和数据,去供别人使用 *数据库(有服务端和客户端 ): ​ I. 可以用txt等文件存储,为什么还需要数据库? ​ 因为使用数据库存储会更 ...

  3. day36 10-Hibernate中的事务:解决丢失更新

    演示hibernate如何产生丢失更新的 丢失更新是怎么玩的?首先两个事务先都把它查出来. A事务里面去修改的数据没了,被B事务覆盖掉了.这是被B事务提交覆盖,B事务回滚也能覆盖.这就是丢失更新的效果 ...

  4. day36 03-Hibernate检索方式:排序、参数绑定、投影查询

    排序之后是分页查询. 检索单个对象 还可以进行参数的绑定. HQL的参数绑定,按参数名称绑定或者是按参数位置绑定. 还可以用投影的操作,投影的操作是只查询这里面的某几个属性.只查询某一个属性,查询多个 ...

  5. day36 python学习gevent io 多路复用 socketserver *****

    ---恢复内容开始--- gevent 1.切换+保存状态 2.检测单线程下任务的IO,实现遇到IO自动切换 Gevent 是一个第三方库,可以轻松通过gevent实现并发同步或异步编程,在geven ...

  6. 线程事件--day36

    """ ----线程事件---- 是用于协调多个线程工作的,当一个线程要执行某个操作,需要获取另一个线程的状态 你要给别人打电话 必须明确知道对方手机买好了 作为客户端 ...

  7. day36 fullstack gevent模块 IO阻塞和非阻塞 IO多路复用 异步IO介绍 其他的补充

    按时打算发放飞 转载于:https://www.cnblogs.com/number1994/p/8250564.html

  8. day36 Pyhton 网络编程03

    一.内容回顾 socket通常也称作"套接字",用于描述IP地址和端口,是一个通信链的句柄,应用程序通常通过"套接字"向网络发出请求或者应答网络请求. sock ...

  9. python 全栈开发,Day36(作业讲解(大文件下载以及进度条展示),socket的更多方法介绍,验证客户端链接的合法性hmac,socketserver)...

     先来回顾一下昨天的内容 黏包现象 粘包现象的成因 : tcp协议的特点 面向流的 为了保证可靠传输 所以有很多优化的机制 无边界 所有在连接建立的基础上传递的数据之间没有界限 收发消息很有可能不完全 ...

最新文章

  1. 添物 不花钱学计算机及编程(预备篇)— 编译原理
  2. NYOJ 70 阶乘因式分解(二)
  3. android app通过Geth RPC接口实现远程调用
  4. rails开发随手记-0
  5. matlab 矢量化,matlab矢量化编程简要
  6. NASA、西门子和大众都在用的 IoT 协议可遭滥用
  7. leetcode·动态规划
  8. 计数器matlab,MATLAB中的几个时间计数器
  9. 树莓派系列(一):树莓派介绍
  10. 2017软件测试考试分值,2017年英语四级分值分配「最新」
  11. 人月神教beta阶段冲刺报告集合
  12. E4A(易安卓)学习——第一个APP
  13. matlab泊松分布参数,MATLAB如何使用poisspdf函数计算泊松分布的概率
  14. Apache Hudi调研小记
  15. Android简单的计步器应用实现
  16. 校招选择题汇总【图形推理(1)】含答案解析
  17. [美文]-- 为何毕业三年后的差距这么大?
  18. jieba.cut 和jieba.posseg
  19. 构建万物互联的智能世界,华为为何选择了智能体?
  20. 【嵌入式数据库原理与应用笔记】介绍,系统结构

热门文章

  1. ps教程:教你如何制作一种漂亮的银色金属字体
  2. 用中文把玩Google开源的Deep-Learning项目word2vec
  3. springboot-admin 整合nacos处理含有context-path的应用问题
  4. Mac本,pip命令下载速度慢怎么办,这里有方案
  5. 套汇算法c语言,在金字塔下实现套利策略的测评
  6. 开源资产管理系统_OCR在资产管理系统的应用
  7. html圆形波浪流量统计,HTML-波浪水球
  8. Partition函数实现java(含分析)
  9. 【测试】18.系统测试及类型
  10. 各大浏览器清除缓存的快捷键