前序

1、cookie介绍

Cookie是一段不超过4KB的小型文本数据,保存在客户端浏览器中,由一个名称(Name)、一个值(Value)和其它几个用于控制Cookie有效期、安全性、使用范围的可选属性组成。其中 :

(1) Name/Value:设置Cookie的名称及相对应的值,对于认证Cookie,Value值包括Web服务器所提供的访问令牌。

(2) Expires属性:设置Cookie的生存期。有两种存储类型的Cookie:会话性与持久性。Expires属性缺省时,为会话性Cookie,仅保存在客户端内存中,并在用户关闭浏览器时失效;持久性Cookie会保存在用户的硬盘中,直至生存期到或用户直接在网页中单击“注销”等按钮结束会话时才会失效 。

(3) Path属性:定义了Web站点上可以访问该Cookie的目录 。

(4) Domain属性:指定了可以访问该 Cookie 的 Web 站点或域。

2、session介绍

Session:与cookie功能效果相同。Session与Cookie的区别在于Session是记录在服务端的,而Cookie是记录在客户端的。

当访问服务器否个网页的时候,会在服务器端的内存里开辟一块内存,这块内存就叫做session,而这个内存是跟浏览器关联在一起的。这个浏览器指的是浏览器窗口,或者是浏览器的子窗口,意思就是,只允许当前这个session对应的浏览器访问,就算是在同一个机器上新启的浏览器也是无法访问的。而另外一个浏览器也需要记录session的话,就会再启一个属于自己的session。

一、cookie学习

1、设置cookie

  • 在服务器设置cookie需要导入make_response包
  • response=make_response(‘hello world’) 括号这里传入的值是在客户端响应的内容
  • response.set_cookie(‘username’,‘mashibing’,max_age=3600) 第一个值是cookie名称,第二个值cookie内容,第三个值设置cookie的有效时间
  • 这个有效时间在服务器没有关闭的状态下,有效时间内,即使你关闭了客户端(浏览器),再次打开客户端(浏览器)仍能访问到。
from flask import *
app=Flask(__name__)
#设置cookie以及有效性期
@app.route('/cookie')
def set_cookiei():
    response=make_response('hello world')
    response.set_cookie('username','mashibing',max_age=3600)
    return response
#读取
@app.route('/get_cookie')
def get_cookie():
    resp=request.cookies.get('username')
    return resp
if __name__ == '__main__':
    app.run()

2、客户端(浏览器)

二、session学习

1、设置SECRET_KEY

  • 这里SECRET_KEY的值是可以随机设置,可以使用os.urandom(24) 随机生成24位字符
  • 此值 [ SECRET_KEY 设置]是保护签名数据的关键 - 保持此安全至关重要,否则攻击者可以使用它来生成自己的签名值。
  • 设置SECRET_KEY 配合加密算法生成sessionID
  • PERMANENT_SESSION_LIFETIME=timedelta(minutes=30) 设置该sessionID在服务器存储的时间,在有效时间内客户端(浏览器)关掉后再次重新访问时,会对其session ID进行校验,若是之前保存在服务器的session ID对应,则可以拿到之前session值。
class Df(object):
    SECRET_KEY=os.urandom(24)
    PERMANENT_SESSION_LIFETIME=timedelta(minutes=30)

2、设置session

  • 这里设置session值在客户端是看不到的,相对安全,除非服务器崩了。
  • 设置的session会保存在服务器。
  • session.permanent=True #这行代码也要写不然前面定义的时间失效。
  • 设置session是以键值对的形式。
@app.route('/test1')
def test1():
    session.permanent=True  #这行代码也要写不然前面定义的时间失效
    #设置session
    session['un']='ywx'
    session['pwd']='123456'
    return 'hello ywx'

3、获取session值

通过session.get() 获取定义的值

#读取session
@app.route('/test2')
def test2():
    un=session.get('un')
    pwd=session.get('pwd')
    print(un,pwd)
    return '获取session的值'

4、整体代码展示

from flask import *
import os
from datetime import timedelta
app=Flask(__name__)
#设置SECRET_KEY
class Df(object):
    SECRET_KEY=os.urandom(24)
    PERMANENT_SESSION_LIFETIME=timedelta(minutes=30)
#导进来参数
app.config.from_object(Df)
@app.route('/test1')
def test1():
    session.permanent=True  #这行代码也要写不然前面定义的时间失效
    #设置session
    session['un']='ywx'
    session['pwd']='123456'
    return 'hello ywx'
#读取session
@app.route('/test2')
def test2():
    un=session.get('un')
    pwd=session.get('pwd')
    print(un,pwd)
    return '获取session的值'
if __name__ == '__main__':
    app.run()

5、客户端(浏览器)展示

到此这篇关于Flask中Cookie和Session理解与作用介绍的文章就介绍到这了,更多相关Flask Cookie Session内容请搜索Devmax以前的文章或继续浏览下面的相关文章希望大家以后多多支持Devmax!

Flask中Cookie和Session理解与作用介绍的更多相关文章

  1. HTML5 Web缓存和运用程序缓存(cookie,session)

    这篇文章主要介绍了HTML5 Web缓存和运用程序缓存(cookie,session),小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧

  2. 关于h5中的fetch方法解读(小结)

    这篇文章主要介绍了关于h5中的fetch方法解读(小结),fetch身为H5中的一个新对象,他的诞生,是为了取代ajax的存在而出现,有兴趣的可以了解一下

  3. iOS Swift上弃用后Twitter.sharedInstance().session()?. userName的替代方案

    解决方法如果您仍在寻找解决方案,请参阅以下内容:

  4. 使用Fabric SDK iOS访问Twitter用户时间线

    我试图在这个问题上挣扎两天.我正在使用FabricSDK和Rest工具包,试图为Twitter使用不同的RestAPIWeb服务.我可以使用具有authTokenSecret,authToken和其他值的会话对象的TWTRLogInButton成功登录.当我尝试获取用户时间线时,我总是得到失败的响应,作为:{“errors”:[{“code”:215,“message”:“BadAuthentic

  5. ios – 如何在Swift中手动为UIWebView设置Cookie

    我需要在swift中为webview设置一个cookie.我找到了一个解决方案,但它是针对objective-c的.如何在Swift中做到这一点?

  6. ios – 如何从Apple Watch调用iPhone上定义的方法

    有没有办法从Watchkit扩展中调用iPhone上的类中定义的方法?根据我的理解,目前在Watchkit和iPhone之间进行本地通信的方法之一是使用NSUserDefaults,但还有其他方法吗?

  7. 通过在iOS中处理cookie来维护会话信息

    我是iOS开发的新手.我正在使用NSURLSession来管理会话信息.下面是我用来调用任何服务器API的示例代码,我的申请流程是,如果没有登录–>登录(呼叫登录api)Else转到主屏幕并调用其他API.我的问题是,一旦从内存中删除应用程序,会话信息就不会被维护,我不得不再次调用Login.我的要求就像Facebook一样,用户只需登录一次,并且在下次应用程序启动时保持会话.编辑:我想我必须通过

  8. ios – 以http无效的自定义URL方案开头

    我在应用程序中使用了自定义URL方案.我成功地从safari重定向到我的应用程序.就像我已经制作了URL方案“appname”.请检查http://prntscr.com/2cjx0p.我需要使用像iosurlredirectfrommailtoapp这样的解决方案,但我不确定如何设置cookie.我发现我必须首先在我的应用程序中为服务器“http://myappname.com”设置一个cook

  9. ios – 如何将视频从AVAssetExportSession保存到相机胶卷?

    在此先感谢您的帮助.解决方法只需使用session.outputURL=…

  10. ios – 使用AVCaptureSession sessionPreset = AVCaptureSessionPresetPhoto拉伸捕获的照片

    解决方法所以我解决了我的问题.这是我现在使用的代码,它工作正常:…重要的输出imagaView:一些额外的信息:相机图层必须是全屏,并且outputimageView也必须是.我希望这些对某些人来说也是有用的信息.

随机推荐

  1. 10 个Python中Pip的使用技巧分享

    众所周知,pip 可以安装、更新、卸载 Python 的第三方库,非常方便。本文小编为大家总结了Python中Pip的使用技巧,需要的可以参考一下

  2. python数学建模之三大模型与十大常用算法详情

    这篇文章主要介绍了python数学建模之三大模型与十大常用算法详情,文章围绕主题展开详细的内容介绍,具有一定的参考价值,感想取得小伙伴可以参考一下

  3. Python爬取奶茶店数据分析哪家最好喝以及性价比

    这篇文章主要介绍了用Python告诉你奶茶哪家最好喝性价比最高,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习吧

  4. 使用pyinstaller打包.exe文件的详细教程

    PyInstaller是一个跨平台的Python应用打包工具,能够把 Python 脚本及其所在的 Python 解释器打包成可执行文件,下面这篇文章主要给大家介绍了关于使用pyinstaller打包.exe文件的相关资料,需要的朋友可以参考下

  5. 基于Python实现射击小游戏的制作

    这篇文章主要介绍了如何利用Python制作一个自己专属的第一人称射击小游戏,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起动手试一试

  6. Python list append方法之给列表追加元素

    这篇文章主要介绍了Python list append方法如何给列表追加元素,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

  7. Pytest+Request+Allure+Jenkins实现接口自动化

    这篇文章介绍了Pytest+Request+Allure+Jenkins实现接口自动化的方法,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下

  8. 利用python实现简单的情感分析实例教程

    商品评论挖掘、电影推荐、股市预测……情感分析大有用武之地,下面这篇文章主要给大家介绍了关于利用python实现简单的情感分析的相关资料,文中通过示例代码介绍的非常详细,需要的朋友可以参考下

  9. 利用Python上传日志并监控告警的方法详解

    这篇文章将详细为大家介绍如何通过阿里云日志服务搭建一套通过Python上传日志、配置日志告警的监控服务,感兴趣的小伙伴可以了解一下

  10. Pycharm中运行程序在Python console中执行,不是直接Run问题

    这篇文章主要介绍了Pycharm中运行程序在Python console中执行,不是直接Run问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

返回
顶部