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
- 每个请求结束:保存会话数据,以便将来的请求找到它。
- Rails提供了一个会话,一个类似哈希的对象,你可以在其中存储任何你喜欢的东西
- 管理会话状态:
- 方法1:只保持主存中的状态
- 方法2:将会话状态存储在磁盘上的文件中
- 方法3:在数据库中存储会话状态
- 大多数框架允许您控制会话存储:
- 提供保存和恢复会话数据的对象。
- 服务器最终必须删除过时的会话数据。
session and cookie简析的更多相关文章
- Android -- 多媒体播放之MediaPlayer使用内部实现简析
Android -- MediaPlayer内部实现简析 在之前的博客中,已经介绍了使用MediaPlayer时要注意的内容.如今,这里就通过一个MediaPlayer代码实例,来进一步分析Media ...
- 基于IdentityServer4的OIDC实现单点登录(SSO)原理简析
写着前面 IdentityServer4的学习断断续续,兜兜转转,走了不少弯路,也花了不少时间.可能是因为没有阅读源码,也没有特别系统的学习资料,相关文章很多园子里的大佬都有涉及,有系列文章,比如: ...
- Spring系列.@EnableRedisHttpSession原理简析
在集群系统中,经常会需要将Session进行共享.不然会出现这样一个问题:用户在系统A上登陆以后,假如后续的一些操作被负载均衡到系统B上面,系统B发现本机上没有这个用户的Session,会强制让用户重 ...
- AFNetworking封装思路简析
http://blog.csdn.net/qq_34101611/article/details/51698473 一.AFNetworking的发展 1. AFN 1.0版本 AFN 的基础部分是 ...
- SpringMVC源码情操陶冶-HandlerAdapter适配器简析
springmvc中对业务的具体处理是通过HandlerAdapter适配器操作的 HandlerAdapter接口方法 列表如下 /** * Given a handler instance, re ...
- (转)浅谈Session与Cookie的区别与联系
一.Session的概念 Session 是存放在服务器端的,类似于Session结构来存放用户数据,当浏览器 第一次发送请求时,服务器自动生成了一个Session和一个Session ID用来唯一标 ...
- 浅谈Session与Cookie的区别与联系
一.Session的概念 Session 是存放在服务器端的,类似于Session结构来存放用户数据,当浏览器 第一次发送请求时,服务器自动生成了一个Session和一个Session ID用来唯一标 ...
- 【转】深入理解 Session 与 Cookie
Session 与 Cookie 不管是对 Java Web 的初学者还是熟练使用者来说都是一个令人头疼的问题.在初入职场时恐怕很多程序员在面试的时候都被问到过这个问题.其实这个问题回答起来既简单又复 ...
- session 与 cookie 区别
一.Session的概念 Session 是存放在服务器端的,类似于Session结构来存放用户数据,当浏览器 第一次发送请求时,服务器自动生成了一个Session和一个Session ID用来唯一标 ...
随机推荐
- Kerberos主从配置文档
Kerberos主从配置文档 1. Kerberos主从同步机制 在Master上通过以下命令同步数据: kdb5_util dump /var/kerberos/krb5kdc/slave_db ...
- Nginx源代码安装
1.确认系统平台及版本 [root@Trial html]# uname -r 2.6.32-696.6.3.el6.x86_64 [root@Trial html]# cat /etc/redhat ...
- Jsの数组练习-求一组数中的最大值和最小值,以及所在位置
要求:求一组数中的最大值和最小值,以及所在位置 代码实现: <!DOCTYPE html> <html lang="en"> <head> &l ...
- WebView性能、体验分析与优化
育新 徐宏 嘉洁 ·2017-06-09 20:03 在App开发中,内嵌WebView始终占有着一席之地.它能以较低的成本实现Android.iOS和Web的复用,也可以冠冕堂皇的突破苹果对热更新的 ...
- Oracle创建视图的一个问题
问题: 在用户user1中创建视图,查询内容包含user2下的表数据, 创建视图的时候提示“权限不足”.执行如下语句: --为USER1授权 GRANT CREATE ANY TABLE TO USE ...
- mod_fcgid FcgidMaxRequestLen 131072 问题
mod_fcgid: HTTP request length 136136 (so far) exceeds MaxRequestLen (131072) 原来是fastcgi模式下的设置问题,需 ...
- 基于Verilog的串口接收程序
一.模块框图及基本思路 detect_module:检测输入引脚的下降沿,以此判断一帧数据的开始 rx_bps_module:波特率时钟产生模块 rx_control_module:串口接收的核心控制 ...
- 剑指Offer 11. 二进制中1的个数 (其他)
题目描述 输入一个整数,输出该数二进制表示中1的个数.其中负数用补码表示. 题目地址 https://www.nowcoder.com/practice/8ee967e43c2c4ec193b040e ...
- acrgis 解决矢量转栅格分辨率过大造成连续值变离散且出现空白
目标:解决北京河流矢量polygon 转栅格的问题 设置栅格大小和影像一致30*30----结果发现,因为cell过大,原本连续的是矢量面变得不连续了,特别细的河流会出现间断(如下图所示): 1号 网 ...
- PHP涉及的所有英文单词
PHP涉及的所有英文单词拦路虎 PHP再火,也会让一部同学心生畏惧,因为看到编辑器中那一串串英文单词,担心自己英文不好,从而对能学会PHP的决心产生动摇.其实大可不必,英文在学习PHP过程中真的连级别 ...