Flask05 cookie

1 什么是cookie

  就是网站存放到你浏览器中的一部分固定内容;当你下次访问我这个网站的时候,你会把之前我存放到你浏览器中的数据带回来给我
        你要先登录(用户名、密码) ->    我作为后台,会将能够唯一识别你的信息数据存在你的浏览器中    ->    下次你再访问我的时候,你的浏览器就会自动将这些数据返回给我    ->    如果我发现你已经登录过来,我就会让你免去登录步骤
  例子(自动登录):
    你是我的网站用户,你登录完我的网站(如果你选择了记住密码和自动登录);如果我在后台获取到你的相关信息后再到数据库查询对应数据,如果正确就会将这些登录信息存放到你的浏览器中,当你下次访问我的网站是就会自动进行登录

   注意:
          浏览器只能删除cookie,不能进行修改;
          只要你存放着我网站的cookie,那么,下次你访问我的时候就一定会把这个cookie信息传给我

2 如何查看cookie信息

  谷歌浏览器  ->  设置  ->  高级  ->  内容设置  ->  cookie

3 如何设置cookie

  cookie是服务器通过响应设置的,所以需要用到Response对象,后台向前端返回的是一个Response对象

  3.1 构造出Response对象

    resp = make_response(‘设置cookie成功‘)

      注意:make_response方法返回的是一个Response对象

  3.2 利用Response对象的set_cookie方法来设置cookie信息

    resp.set_cookie(‘name‘, ‘Warrior‘)

      注意:通过make_response方法得到的Response对象在pycharm编辑器中不会自动进行代码补全,所以点击后也看不到源代码;但是我们可以通过Response这个类来查看set_cookie方法的源代码

        Response.set_cookie()  点击set_cookie后就可以查看源代码啦(前提:需要导入Response这个类)

  3.3 视图函数返回Response对象即可

    return resp  

from flask import Flask
from flask import make_response, Response

app = Flask(__name__)

@app.route(‘/‘)
def index():
    # Response.set_cookie()  # 用于查看源代码
    # def set_cookie(self, key, value=‘‘, max_age=None, expires=None,
    #                path=‘/‘, domain=None, secure=False, httponly=False):
    resp = make_response(‘设置cookie成功‘) # 创建Response对象
    resp.set_cookie(‘name‘, ‘Warrior‘) # 通过Response对象设置cookie
    return resp # 返回Response对象

print(app.url_map)

if __name__ == ‘__main__‘:
    app.run(debug=True)

  3.4 设置后的效果

    

  3.5 注意

    每次设置完cookie后,在查询效果前需要刷新一下

    cookie数据必须是字符串类型否则会报错

4 如何拿到cookie数据

  通过请求对象去获取cookie数据

  4.1 导入request对象

    from flask import request

  4.2 访问reques对象的cookies属性

    request.cookies

  4.3 查看request对象的cookies属性的类型

    print(type(request.cookies))

      打印出的结果为:<class ‘werkzeug.datastructures.ImmutableTypeConversionDict‘>

        显而易见,这是一个class类,查看这个类的方法如下

          根据打印出的类型信息,导入相关信息

            from werkzeug.datastructures import ImmutableTypeConversionDict

              点击ImmutableTypeConversionDict后就可以看到源码啦,从源码中可以知道这个ImmutableTypeConversionDict类是继承与Dict类的,所以Dict类拥有的方法和属性ImmutableTypeConversionDict类都可以使用

  4.4 打印request对象的cookie属性信息

    print(request.cookies)

      打印结果为:{‘name‘: ‘Warrior‘, ‘age‘: ‘24‘}    这个结果是一个字典,原因已经在4.3阐明清楚啦

  4.5 如何获取指定的那个cookie信息

    name = request.cookies.get(‘name‘)

from flask import Flask
from flask import make_response, Response
from flask import request

from werkzeug.datastructures import ImmutableTypeConversionDict

app = Flask(__name__)

# 利用Response对象设置cookie
@app.route(‘/‘)
def index():
    # Response.set_cookie()  # 用于查看源代码
    # def set_cookie(self, key, value=‘‘, max_age=None, expires=None,
    #                path=‘/‘, domain=None, secure=False, httponly=False):
    resp = make_response(‘设置cookie成功‘) # 创建Response对象
    resp.set_cookie(‘name‘, ‘Warrior‘) # 通过Response对象设置cookie
    resp.set_cookie(‘age‘, ‘24‘)
    return resp  # 返回Response对象

# 利用Request对象获取cookie数据
@app.route(‘/get/‘)
def get():
    print(request.cookies) # 打印所有的cookie数据
    print(type(request.cookies)) # 打印resqust对象cookie属性的类型
    name = request.cookies.get(‘name‘) # 获取单个的cookie数据
    return ‘获取到的名字为:‘+name

print(app.url_map)

if __name__ == ‘__main__‘:
    app.run(debug=True)

5 设置cookie的保持时间

  cookie默认的保持时间是永久有效(即:关闭浏览器客户端之前都是有效的),时间单位是秒

  

  resp.set_cookie(‘age‘, ‘24‘)

    

  resp.set_cookie(‘name‘, ‘Warrior‘, max_age=60)

    

from flask import Flask
from flask import make_response, Response
from flask import request

from werkzeug.datastructures import ImmutableTypeConversionDict

app = Flask(__name__)

# 利用Response对象设置cookie
@app.route(‘/‘)
def index():
    # Response.set_cookie()  # 用于查看源代码
    # def set_cookie(self, key, value=‘‘, max_age=None, expires=None,
    #                path=‘/‘, domain=None, secure=False, httponly=False):
    resp = make_response(‘设置cookie成功‘)
    resp.set_cookie(‘name‘, ‘Warrior‘, max_age=60)
    resp.set_cookie(‘age‘, ‘24‘)
    return resp  # 返回Response对象

# 利用Request对象获取cookie数据
@app.route(‘/get/‘)
def get():
    print(request.cookies) # 打印所有的cookie数据
    print(type(request.cookies))
    name = request.cookies.get(‘name‘)
    age = request.cookies.get(‘age‘)
    return ‘获取到的名字为:age = ‘ + name + "     " + "获取到的年纪为:age = " + age

print(app.url_map)

if __name__ == ‘__main__‘:
    app.run(debug=True)

6 设置访问路径

  cookie默认的访问路径是所有路径

  

  resp.set_cookie(‘name‘, ‘Warrior‘, path=‘/test/‘)

    该cookie只有路径开头是 /test/ 的才能够访问到

    

  resp.set_cookie(‘age‘, ‘24‘)

    该cookie所有的路径都能够访问到

    

7 设置访问域名

  不进行设置时,那么只有设置cookie那个域名下可以访问到cookie信息;一般情况下是不需要进行设置的,如果需要利用子域名进行访问时就必须进行设置

  resp.set_cookie(‘name‘, ‘Warrior‘, domain=‘.xiangxu.com‘)

    将该cookie设置成 xiangxu.com 及其子域名下都可以进行访问

  

from flask import Flask
from flask import make_response, Response
from flask import request
from flask import Blueprint

from werkzeug.datastructures import ImmutableTypeConversionDict

app = Flask(__name__)
app.config[‘SERVER_NAME‘] = ‘xiangxu.com:5000‘ # 设置域名访问

bp = Blueprint(‘moive‘, __name__, subdomain=‘zeus‘)

# 利用子域名访问cookie
@bp.route(‘/get/‘)
def action():
    print(request.cookies)  # 打印所有的cookie数据
    print(type(request.cookies))
    name = request.cookies.get(‘name‘)
    age = request.cookies.get(‘age‘)
    return ‘获取到的名字为:age = ‘ + str(name) + "     " + "获取到的年纪为:age = " + str(age)
app.register_blueprint(bp)

# 利用Response对象设置cookie
@app.route(‘/‘)
def index():
    # Response.set_cookie()  # 用于查看源代码
    # def set_cookie(self, key, value=‘‘, max_age=None, expires=None,
    #                path=‘/‘, domain=None, secure=False, httponly=False):
    resp = make_response(‘设置cookie成功‘)
    resp.set_cookie(‘name‘, ‘Warrior‘, domain=‘.xiangxu.com‘)
    resp.set_cookie(‘age‘, ‘24‘)
    return resp  # 返回Response对象

# 利用Request对象获取cookie数据
@app.route(‘/get/‘)
def get():
    print(request.cookies) # 打印所有的cookie数据
    print(type(request.cookies))
    name = request.cookies.get(‘name‘)
    age = request.cookies.get(‘age‘)
    return ‘获取到的名字为:age = ‘ + str(name) + "     " + "获取到的年纪为:age = " + str(age)

# 利用不同路径访问cookie
@app.route(‘/test/get/‘, endpoint=‘testGet‘)
def get():
    print(request.cookies) # 打印所有的cookie数据
    print(type(request.cookies))
    name = request.cookies.get(‘name‘)
    age = request.cookies.get(‘age‘)
    return ‘获取到的名字为:age = ‘ + name + "     " + "获取到的年纪为:age = " + age

print(app.url_map)

if __name__ == ‘__main__‘:
    app.run(debug=True)

8 设置是否JS代码可以访问cookie

  默认情况下可以通过JS代码访问cookie信息

  resp.set_cookie(‘name‘, ‘Warrior‘, httponly=True)

  

  

9 未完待续...

  2017年9月17日15:30:40

时间: 2024-11-10 14:06:46

Flask05 cookie的相关文章

COOKIE+SESSION

cookie的缺点: 因为cookie保存在浏览器上,所以安全性低可控性比较差,只能存放字符串大多数的浏览器对cookie有4K的限制. 下面是cookie在浏览器和服务器中请求与响应的过程: 1.    COOKIE的工作原理 cookie过程描述 网站为了辨别用户身份.进行 session 跟踪而储存在用户本地终端上的数据(通常经过加密) 用户第一次访问你的网站->在服务器端会将用户的信息设置为cookie(可以理解为制造饼干过程)->通过http协议发送给用户(浏览器),在用户端,coo

会话技术Session&amp;Cookie

一.会话技术简介 1.存储客户端的状态 由一个问题引出今天的内容,例如网站的购物系统,用户将购买的商品信息存储到哪     里?因为Http协议是无状态的,也就是说每个客户访问服务器端资源时,服务器并不知道该客户端是谁,所以需要会话技术识别客户端的状态.会话技术是帮助服务器   记住客户端状态(区分客户端) 举例购物过程: 2.会话技术 从打开一个浏览器访问某个站点,到关闭这个浏览器的整个过程,成为一次会话.会话技术就是记录这次会话中客户端的状态与数据的. 会话技术分为Cookie和Sessio

JS设置读取删除cookie及表单交互

学习cookie和表单交互留下的一点笔记 什么是cookie?cookie 是存储于客户端的变量.当设备请求页面时,就会发送cookie.首先需要稍微了解一下cookie的结构,简单地说:cookie是以键值对的形式保存的,即key=value的格式.各个cookie之间一般是以";"分隔.JS设置cookie:document.cookie= key + '=' + value + ';expires=' + Date;其中Date为cookie的过期时间.实际案例: //setCo

session和cookie的区别

原作者:施杨(施杨's Think out)出处:http://shiyangxt.cnblogs.com 二者的定义: 当你在浏览网站的时候,WEB 服务器会先送一小小资料放在你的计算机上,Cookie 会帮你在网站上所打的文字或是一些选择, 都纪录下来.当下次你再光临同一个网站,WEB 服务器会先看看有没有它上次留下的 Cookie 资料,有的话,就会依据 Cookie 里的内容来判断使用者,送出特定的网页内容给你. Cookie 的使用很普遍,许多有提供个人化服务的网站,都是利用 Cook

cookie和session得区别

1.cookie 是一种发送到客户浏览器的文本串句柄,并保存在客户机硬盘上,可以用来在某个WEB站点会话间持久的保持数据. 2.session其实指的就是访问者从到达某个特定主页到离开为止的那段时间. Session其实是利用Cookie进行信息处理的,当用户首先进行了请求后,服务端就在用户浏览器上创建了一个Cookie,当这个Session结束时,其实就是意味着这个Cookie就过期了. 注:为这个用户创建的Cookie的名称是aspsessionid.这个Cookie的唯一目的就是为每一个用

javaWeb基础知识----Cookie,Session

?HTTP协议是一种无状态的协议,WEB服务器本身不能识别出哪些请求是同一个浏览器发出的,浏览器的每一次请求都是完全孤立的 ?即使 HTTP1.1支持持续连接,但当用户有一段时间没有提交请求,连接也会关闭. ?怎么才能实现网上商店中的购物车呢:某个用户从网站的登录页面登入后,再进入购物页面购物时,负责处理购物请求的服务器程序必须知道处理上一次请求的程序所得到的用户信息. ?作为 web 服务器,必须能够采用一种机制来唯一地标识一个用户,同时记录该用户的状态 1.会话和会话状态 ?WEB应用中的会

Session和Cookie的使用总结

转:http://www.cnblogs.com/shuang121/archive/2011/03/02/1968768.html Session和Cookie的使用总结: Session和cookie都是asp.Net中的内置对象,至于他们有什么区别,在这里就不在多说,现在来说说一些比较实用点的东西: 我们知道网站都有一个后台管理系统,其中有登录和退出两个功能,在登录的时候我们往往会把用户的信息保存到session或者cookie中,以便后面使用,那么在登录的时候我们要注意哪些呢? 1.把一

学习日常笔记&lt;day11&gt;cookie及session

1.会话管理 1.1会话管理定义 会话管理:管理浏览器客户端和服务端之间的会话过程中产生的会话数据 域对象:实现资源之间的数据共享 request 域对象 context 域对象 1.2.会话技术 Cookie技术:会话数据保存在浏览器客户端中 Session技术:会话数据保存在服务器端 2.Cookie技术 2.1 特点 Session技术:会话数据保存在服务器端 2.2Cookie技术核心 Cookie类:用于存储会话数据 1)构造Cookie对象 Cookie(java.lang.Stri

Cookie和Session

会话(Session)跟踪是Web程序中常用的技术,用来跟踪用户的整个会话.常用的会话跟踪技术是Cookie与Session.Cookie通过在客户端记录信息确定用户身份,Session通过在服务器端记录信息确定用户身份. 本章将系统地讲述Cookie与Session机制,并比较说明什么时候不能用Cookie,什么时候不能用Session. Cookie机制 Cookie技术是客户端的解决方案,Cookie就是由服务器发给客户端的特殊信息,而这些信息以文本文件的方式存放在客户端,然后客户端每次向