zoukankan      html  css  js  c++  java
  • session and cookie简析

    无状态应用程序(cookies、session等机制出现的背景)

    • Web应用程序服务器通常是“无状态的”:
      • 每个HTTP请求都是独立的; 服务器无法判断2个请求是来自同一个浏览器还是用户。
      • Web服务器应用程序在请求到请求的内存中不保留任何信息(只有磁盘上的信息从一个请求存活到另一个请求)。
    • 无状态对于应用程序开发人员来说并不总是方便的:需要将来自同一用户的一系列请求联系在一起。
    • 加入了cookies、session等机制去实现有状态的web应用,但不会改变http协议作为技术背景的web应用程序请求--应答模式是无状态的本质。

    浏览器cookie

    • Cookie基础知识:
      • 浏览器第一次与特定服务器连接时,没有cookie。
      • 当服务器响应时,它包含一个定义cookie 的Set-Cookie:头。
      • 每个cookie只是一个名称 - 值对。
      • 将来,只要浏览器与同一服务器连接,它就会包含一个包含名称和值的Cookie:标头,服务器可以使用该标头连接相关请求。
    • 什么是Cookie?
      • 名称和数据。
        • 数据大小受浏览器限制(通常<4 KB)。
        • 服务器可以定义多个具有不同名称的cookie,但浏览器限制每个服务器的cookie数量(大约50个)。
      • 此cookie的域:服务器,端口(可选),URL前缀(可选)。Cookie仅包含在与其域匹配的请求中。
      • 到期日期:浏览器可以删除旧的cookie。

    session

    • 服务器使用Cookie来实现会话
      • 与活动连接相关的数据池(一个浏览器实例)。
    • 通常,应用程序的cookie包含会话的标识符。
       
    • 像Rails这样的Web框架可以完成管理会话和cookie的大部分工作:
      • Rails提供了一个会话,一个类似哈希的对象,你可以在其中存储任何你喜欢的东西
        • 数据将在以后来自同一浏览器的所有请求中提供。
      • Rails会在每个请求开始时自动检查会话cookie:
        • Cookie是否存在,用它来查找会话数据
        • 没有Cookie,创建新会话,新cookie
      • 每个请求结束:保存会话数据,以便将来的请求找到它。
     
    • 管理会话状态:
      • 方法1:只保持主存中的状态
      • 方法2:将会话状态存储在磁盘上的文件中
      • 方法3:在数据库中存储会话状态
      • 大多数框架允许您控制会话存储:
        • 提供保存和恢复会话数据的对象。
    • 服务器最终必须删除过时的会话数据。
  • 相关阅读:
    避免数据脏读
    OGG配置文件中参数化的运用
    GoldenGate基于中间队列文件的初始化
    一次linux中毒,挖矿病毒
    goldengate新版本中查看日志读取点
    dlopen用法参数flag介绍
    gdb调试带参数和调试core
    在现有的git服务器上面创建新的repo
    Play Old Diablo 2 on macOS Catalina
    Odoo中的Environment对象
  • 原文地址:https://www.cnblogs.com/LeshengW/p/10667342.html
Copyright © 2011-2022 走看看