zoukankan      html  css  js  c++  java
  • 关于session和cookie

    摘自《前端大牛爱好者-一文彻底搞懂cookie和session》

    为什么需要?

    • http协议为无状态的,因此服务器无法知道是谁在浏览网页,但某些网页需要知道用户的状态,例如登录、购物车等
    • 解决方案:隐藏表单域、url重写、cookie和session

    关于cookie

    • cookie是服务器传给客户端并保存在客户端的一段信息
    • 服务器将一些key/value键值对返给客户端浏览器,并添加一些限制条件
    • 条件符合时,该用户在下次访问这个服务器时,数据通过请求头被完整的带回服务器
    • 服务器根据这些信息判断不同的用户
    • cookie有大小和数量限制,客户端和服务器传输量越大,cookie越多

    cookie分类

    • 会话级cookie:浏览器关闭之后Cookie失效
    • 持久级cookie:保存在硬盘的cookie,只要设置了过期时间就是硬盘级别cookie

    关于session

    session是基于cookie来工作的。服务器与客户端之间每次不必传输所有cookie值,而是传递一个代表不同cookie的唯一id.服务器端将cookie值与唯一id统一维护,通过id的传递就可以准确检索到对应的cookie值,既解决了服务器与客户端之间传递用户信息的需求,又解决了cookie传输量过大的引起的性能问题以及cookie泄露等安全问题。

    传递session的方式

    • 通过url传递sessionId
    • 通过cookie传递SessionId
    • 通过ssl传递sessionId
    • 通过隐藏表单传递sessionId

    session工作原理

    • 创建session
    • session保存
    • session的销毁:session的生命周期是从创建到超时过期,浏览器关闭只是关闭了会话级的cookie,而sessionid对应的session并没有被销毁。

    两者异同

    • Session和Cookie都是为了让http协议有状态而存在
    • Session通过Cookie工作,Cookie传输的SessionID让Session知道这个客户端是谁

    不同点

    • Session将信息保存在服务器中,Cookie将信息保存在客户端中

    session工作流

    • 浏览器第一次访问服务器时,服务器创建Session
    • 通过Cookie将SessionID带给浏览器保存在客户端
    • 服务器根据业务逻辑将相应的客户端信息保存在session中
    • 客户端再访问时上传cookie
    • 服务器得到cookie中的sessionID,来维护存在session中的客户端信息。
  • 相关阅读:
    Android Packaging Problem
    Dedecms中{dede:type}标签支持调用父级栏目名称
    DeDecms远程写入漏洞webshell (dedecms漏洞)
    Dedecms 目标仿站的学习视频
    关于前端JS走马灯(marquee)总结
    浏览器端如何使用VConsole.js调试代码?
    Firefox中input元素,不能重新获取焦点函数focus()
    Centos7 systemctl添加自定义系统开机服务
    织梦cms 内容模型 option下拉框 value 分离
    wdcp如何添加反向代理功能
  • 原文地址:https://www.cnblogs.com/nanhuaqiushui/p/11832081.html
Copyright © 2011-2022 走看看