无状态应用程序(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:在数据库中存储会话状态
    • 大多数框架允许您控制会话存储:
      • 提供保存和恢复会话数据的对象。
  • 服务器最终必须删除过时的会话数据。

session and cookie简析的更多相关文章

  1. Android -- 多媒体播放之MediaPlayer使用内部实现简析

    Android -- MediaPlayer内部实现简析 在之前的博客中,已经介绍了使用MediaPlayer时要注意的内容.如今,这里就通过一个MediaPlayer代码实例,来进一步分析Media ...

  2. 基于IdentityServer4的OIDC实现单点登录(SSO)原理简析

    写着前面 IdentityServer4的学习断断续续,兜兜转转,走了不少弯路,也花了不少时间.可能是因为没有阅读源码,也没有特别系统的学习资料,相关文章很多园子里的大佬都有涉及,有系列文章,比如: ...

  3. Spring系列.@EnableRedisHttpSession原理简析

    在集群系统中,经常会需要将Session进行共享.不然会出现这样一个问题:用户在系统A上登陆以后,假如后续的一些操作被负载均衡到系统B上面,系统B发现本机上没有这个用户的Session,会强制让用户重 ...

  4. AFNetworking封装思路简析

    http://blog.csdn.net/qq_34101611/article/details/51698473 一.AFNetworking的发展 1. AFN 1.0版本 AFN 的基础部分是 ...

  5. SpringMVC源码情操陶冶-HandlerAdapter适配器简析

    springmvc中对业务的具体处理是通过HandlerAdapter适配器操作的 HandlerAdapter接口方法 列表如下 /** * Given a handler instance, re ...

  6. (转)浅谈Session与Cookie的区别与联系

    一.Session的概念 Session 是存放在服务器端的,类似于Session结构来存放用户数据,当浏览器 第一次发送请求时,服务器自动生成了一个Session和一个Session ID用来唯一标 ...

  7. 浅谈Session与Cookie的区别与联系

    一.Session的概念 Session 是存放在服务器端的,类似于Session结构来存放用户数据,当浏览器 第一次发送请求时,服务器自动生成了一个Session和一个Session ID用来唯一标 ...

  8. 【转】深入理解 Session 与 Cookie

    Session 与 Cookie 不管是对 Java Web 的初学者还是熟练使用者来说都是一个令人头疼的问题.在初入职场时恐怕很多程序员在面试的时候都被问到过这个问题.其实这个问题回答起来既简单又复 ...

  9. session 与 cookie 区别

    一.Session的概念 Session 是存放在服务器端的,类似于Session结构来存放用户数据,当浏览器 第一次发送请求时,服务器自动生成了一个Session和一个Session ID用来唯一标 ...

随机推荐

  1. obspy下载地震波数据

    Retrieving Data from Data Centers(从数据中心检索数据) PS:此部分提供了使用obspy下载数据的推荐方式,但是由于数据中心和web服务在不断更新变化,所有有些建议可 ...

  2. firstPage

    自己写的科比的一个简单介绍的网页,画面,布局还是太垃圾了,图片放大缩小标签不知道,简直难受. <!DOCTYPE html><html> <head> <me ...

  3. Linux:挂载、卸载光盘

    挂载.卸载光盘 前提准备: 已经安装好虚拟机 安装好的虚拟机与镜像系统最好一致 前提配置 1.选择虚拟机 2.选择设置 3.选择CD/DVD 4.选择ISO镜像文件,选择设备状态,都勾选 5.ps如果 ...

  4. SQL注入之Sqli-labs系列第三十三关(基于宽字符逃逸注入)

    开始挑战第三十三关(Bypass addslashes) 0x1查看源码 本关和第三十二关其实是一样的,只是这里用到了addslashes()函数 function check_addslashes( ...

  5. CSS精简工具——除去多余的css样式

    有时候开发网页中在改版之后,存在很多无意义的样式,对于后期的管理和维护很不友好. 如果手动去删除,很可能会导致出现更混乱的问题. 最近找到一个Chrome插件,CSS remove and combi ...

  6. SQL-记录-005

    对于记录的操作涉及的知识比较多,分多篇文章进行梳理. 记录创建篇:记录删除篇:记录修改篇:记录查询篇:

  7. webpack的知识内容

    webpack的构建工具: 浏览器的兼容性? 转换ES6语法: 转化JSX: css

  8. 全志A33 lichee 搭建Qt App开发环境编写helloworld

    开发平台 * 芯灵思SinlinxA33开发板 淘宝店铺: https://sinlinx.taobao.com/ 嵌入式linux 开发板交流 QQ:641395230 Step 1 在虚拟机(Ce ...

  9. idc市场

    机房 idc服务商 ============================== 电信1.古城热线-西部数据中心于2001年正式投入运营,有经济技术开发区和高新技术产业开发区两个核心机房高新路电信广场 ...

  10. Django学习笔记之数据库-QuerySet_API

    QuerySet API 我们通常做查询操作的时候,都是通过模型名字.objects的方式进行操作.其实模型名字.objects是一个django.db.models.manager.Manager对 ...