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:在数据库中存储会话状态
      • 大多数框架允许您控制会话存储:
        • 提供保存和恢复会话数据的对象。
    • 服务器最终必须删除过时的会话数据。
  • 相关阅读:
    HDU 1025 Constructing Roads In JGShining's Kingdom (DP+二分)
    HDU 1158 Employment Planning
    HDU 2059 龟兔赛跑
    Csharp 简单操作Word模板文件
    Csharp windowform datagridview Clipboard TO EXCEL OR FROM EXCEL DATA 保存datagridview所有數據
    Csharp 讀寫文件內容搜索自動彈出 AutoCompleteMode
    Csharp windowform controls clear
    CSS DIV大图片右上角叠加小图片
    Csharp DataGridView自定义添加DateTimePicker控件日期列
    Csharp 打印Word文件默認打印機或選擇打印機設置代碼
  • 原文地址:https://www.cnblogs.com/bbeb/p/10603468.html
Copyright © 2011-2022 走看看