美文网首页理论基础web&Request微服务
十、Session、Cookie、Token区别

十、Session、Cookie、Token区别

作者: InsaneLoafer | 来源:发表于2021-05-27 09:52 被阅读0次

    flask demo

    #!/user/bin/env python
    # -*- coding: utf-8 -*-
    from flask import Flask, session, Request, request, make_response
    
    app = Flask(__name__)
    request: Request
    app.secret_key = "key"
    
    @app. route( "/session")
    def session_handle() :
        for k, v in request.args.items ( ) :
            session [k] = v
        resp = make_response({k: v for k, v in session.items()})
        for k, v in request.args.items ( ) :
            resp.set_cookie( f"cookie_{k}", v)
        return resp
    

    普通get请求与设置session请求的diff

    image.png
    • session数据存到服务端,session是一套数据的管理机制
    • session加密的内容会存到cookie中,通常称为 基于cookie的session

    cookie的作用

    • 访问时会携带cookie信息,即使修改url的路径也会携带同样的cookie
    • sessionId以cookie的形式存放在客户端,以此来访问服务端信息


      image.png
      image.png

    session与cookie的区别

    • cookie:浏览器接受服务器的Set-Cookie指令,并把cookie保存到电脑上,每个网站保存的cookie只作用于自己的网站
    • session:数据存储到服务端,只把关联数据的一个加密串放到cookie中标记

    token应用场景

    • 凭借认证信息获取token,或者通过后台配置好token

    • 在相关请求中使用token,多数是以query参数的形态提供

    • 参考OAuth认证、企业微信、微信、github、gitlab等相关认证

    • 以企业微信为例:此token通常有过期时间


      image.png
    • 以GitHub为例:此token通常不过期,可长期使用


      image.png

    session与token的区别

    • token是一个用户请求时附带的请求字段,用于验证身份与权限
    • session可以基于cookie,也可以基于query参数,用于关联用户相关数据
    • 跨端应用的时候,比如android原生系统不支持cookie
      • 需要用token识别用户
      • 需要用把sessionid保存到http请求中的header或者query字段中

    下一节:Mock应用,通过代理修改请求与响应,辅助构造更多场景实例。

    相关文章

      网友评论

        本文标题:十、Session、Cookie、Token区别

        本文链接:https://www.haomeiwen.com/subject/fobbjltx.html