简单总结下 cookie、session
Cookies:
定义:cookie 中文意思是“小甜饼”,但是,在互联网中它跟食品没有半毛钱关系,它主要是由web服务器应用程序创建,在客户端计算机中保存,问题来了,为什么它web服务器要将创建好的文件保存在客户端?因为客户端发送一个请求到服务端,然后服务器端都是把他当做第一次访问来对待,web 服务器要做的只是简单将对应的响应发送到客户端(浏览器),然后关闭客户端(浏览器)与服务端的连接。这样的缺点就很明显,由于HTTP 协议是无状态的,服务器端不知道同时请求的客户端是那个,也不知道该站点之前已经访问过了该服务器,现在可以根据客户自定义查看。自从网景公司开发了Cookies,可以利用Cookie来保存用户的识别信息。Cookies的作用可以记录了您在该站点上曾经访问过的页面,由此帮助您下次访问该站点时自定义查看。Cookies 也可以存储个人可识别信息。个人可识别信息是可以用来识别或联系您的信息,例如姓名、电子邮件地址、家庭或工作地址,或者电话号码。然而,网站只能访问您提供的个人可识别信息。
优点:1、实现和使用都是很简单的
2、对于多个站点的Cookies都是由浏览器进行管理
3、由浏览器来负责维护Cookies的数据
缺点: 1、有大小的限制(一般都是4KB)
2、不安全,都是以简单文本的形式保存
3、Cookies最大数目也有限制。主流浏览器提供将cookies的个数限制在20条。如果新cookies到来,那么老的将被删除。有些浏览器能支持到300条的cookies数。
创建cookies:
当一个客户端向服务器发出请求,服务器发送cookies给客户端。而相同的cookies可以被后续的请求使用。例如,如果codeproject.com将Session ID作为cookies存储。当一个客户端首次向web服务器请求页面,服务器生成Session ID,并将其作为cookies发送往客户端。
现在,所有来自相同客户端的后续请求,它将使用来自cookies的Session ID,就像下面这幅图片展示的那样。
浏览器和web服务器以交换cookies信息来作为响应。对不同的站点,浏览器会维护不同的cookies。如果一个页面需要cookies中的信息,当某个URL被“点击”,首先浏览器将搜索本地系统的cookies的信息,然后才转向服务器来获得信息。
创建cookies 代码:
HttpCookie setCookie = new HttpCookie("code");
                setCookie.Name = "code";
                setCookie.Value = code;
                Response.Cookies.Add(setCookie);
setCookie.Name = "code";
                setCookie.Value = code;
                Response.Cookies.Add(setCookie);
如何获取cookies 里面的信息:
在读取cookies之前,首先我们需要检查是否能找到该cookie。在读取cookies之前,先检查它总是一个很好的习惯,因为浏览器可能禁用cookies。
HttpCookie getCookie = Request.Cookies["code"];
                string cookiesName=string.Empty;
                if (getCookie != null)//防止浏览器禁用掉了cookies
                {
   cookiesName = setCookie["code"];
                }
持久化的cookies:这可以被称为永久性的cookies,它被存储在客户端的硬盘内,直到它们失效。持久化的cookies应该被设置一个失效时间。有时,它们会一直存在直到用户删除它们。持久化的cookies通常被用来为某个系统收集一个用户的标识信息。
非持久化cookies:也可以被称之为临时性的cookies。如果没有定义失效时间,那么cookie将会被存储在浏览器的内存中。我上面展示的例子就是一个非持久的cookies。
修改一个持久化的cookies与一个非持久化的cookies并没有什么不同。它们唯一的区别是——持久化的cookies有一个失效时间的设置。
Seesion:
定义:是保存在服务器iis 上面的一个会话状态,作为一个全局变量,可以作为页面传值,数据类型都是“key-value” 字典类型存储。
与cookies 联系:当客户端(浏览器)发送请求到服务器端时,服务器端都会判断cookies 里面有没有seesionid ,如果没有,就会创建一个sissionid 与cookies 一起发送到客户端,在cookies 保存在一起,如果有seesionid,则将这个seesionid 与服务端session 池中的sessionid 判断,检查有没有匹配的seesionid ,如果有,直接将对应的cookies 发送到客户端。
session 特性:
1.Session是一种Web会话中的常用状态之一。
2.Session提供了一种把信息保存在服务器内存中的方式。他能储存任何数据类型,包含自定义对象。
3.每个客户端的Seesion是独立存储的。
4.在整个会话过程中,只要SessionID的cookie不丢失,都会保存Session信息的。
5.Session不能跨进程访问,只能由该会话的用户访问。应为提取Session数据的id标识是以Cookie的方式保存到访问者浏览器的缓存里的。
6.当会话终止,或过期时,服务器就清除Session对象。
7.Session常用于保存登录用户的ID.
8.Session保存的数据是跨页面全局型的。
Session原理
session是怎么存储,提取的?
1.在服务器端有一个session池,用来存储每个用户提交session中的数据,Session对于每一个客户端(或者说浏览器实例)是“人手一份”,用户首次与Web服务器建立连接的时候,服务器会给用户分发一个SessionID作为标识。SessionID是一个由24个字符组成的随机字符串。用户每次提交页面,浏览器都会把这个SessionID包含在HTTP头中提交给Web服务器,这样Web服务器就能区分当前请求页面的是哪一个客户端,而这个SessionID是一cookie的方式保存的在客户端的内存中的,如果想要得到Session池中的数据,服务器就会根据客户端提交的唯一SessionID标识给出相应的数据返回。
PS:面试常问:如果客户端禁用了cookie,session 还能用吗?
回答:可以,虽然session 与cookies 是通过seesionid 保存到cookies 里面去的,cookies消失,sessionid 也没有了,seesion 就不能检查到客户端用户的访问记录,但是可以通过url 重写的方式进行seesionid 客户端与服务器端进行交互,或者用Cookies Munging (当用户向服务器请求一个页面,服务器编码“session id”然后将它们加入到页面的每一个HREF 的链接中。当用户点击一个链接,asp.net解码session id并传递它给用户请求的页面。现在,正在被请求的页面就可以检索到任何的session变量。这一切都将平滑地发生——当asp.net检测到用户浏览器不支持cookies时)
由于本人经验不足,如果说错的地方,希望大大的指出,不胜感激!!
简单总结下 cookie、session的更多相关文章
- 简单说下cookie,LocalStorage与SessionStorage.md
		
最近在网上看到有人讨论这三个的一些概念与区别,发现自己也一直没有较好的总结,所以查阅了一些资料来阐述一下. 基本概念 cookie cookie英文意思是小甜饼,是原来的网景公司创造,目前是在客户端存 ...
 - forms组件补充与ModelForm简单使用与cookie与session
		
目录 forms组件钩子函数 forms组件字段参数 字段参数 validators详解 choices详解 widget详解 forms组件字段类型 ModelForm简单使用 cookie与ses ...
 - 使用cookie/session实现简单的用户信息的保存
		
cookie一般用来存储非关键信息 , 用户名和密码等敏感信息一般采用session 来存储:cookie和session的最大区别是当服务器端存储session 之后,用户再次请求时候只是请求了一个 ...
 - cookie&session&servletContext
		
一.cookie VS session 1)应用场景 cookie可以用于: 记录用户上次登录的时间 记住用户名和密码 session可以用于: 防止非法登录(即直接跳转到本来需登录验证方可登录的页面 ...
 - 微服务架构下分布式Session管理
		
转载本文需注明出处:EAII企业架构创新研究院(微信号:eaworld),违者必究.如需加入微信群参与微课堂.架构设计与讨论直播请直接回复此公众号:“加群 姓名 公司 职位 微信号”. 一.应用架构变 ...
 - Servlet学习笔记(1)--第一个servlet&&三种状态对象(cookie,session,application)&&Servlet的生命周期
		
servlet的404错误困扰了两天,各种方法都试过了,翻书逛论坛终于把问题解决了,写此博客来纪念自己的第一个servlet经历. 下面我会将自己的编写第一个servlet的详细过程提供给初学者,大神 ...
 - Cookie Session Cache
		
二. 工作机制 Ø Cookie :采用的是客户端保存信息的方案. Ø Session :采用服务器端保存信息的方案. Ø Cache :利用缓存 SRAM 来"静态"的保存写入信 ...
 - php会话控制cookie/session
		
设置cookie PHP设置Cookie最常用的方法就是使用setcookie函数,setcookie具有7个可选参数,我们常用到的为前5个: name( Cookie名)可以通过$_COOKIE[' ...
 - 集群环境下的Session共享
		
一.Cookie机制和Session机制回顾 1)定义:Session成为“会话”,具体是指一个终端用户与交互系统进行通信的时间间隔,通常指从注册进入系统到注销退出系统之间所经过的时间.Session ...
 
随机推荐
- Java经典编程题50道之二十五
			
一个5位数,判断它是不是回文数.即12321是回文数,个位与万位相同,十位与千位相同. public class Example25 { public static void main(Stri ...
 - 对于	@Autowired注解和@service注解的理解
			
@Autowired相当于Spring自动给你进行了new一个对象将这个对象放入你的注解所在类里面. @service 是可以让IOC容器对于你注解的类可以在容器中生成相应的bean实例 便于我们进行 ...
 - R学习笔记:了解R的使用
			
R是一种区分大小写的解释性语言,只支持单行注释,注释由符号#开头,当前行出现在#之后的任何文本都会被R解释器忽略.R脚本的一次执行叫做一个会话(Session),可以通过函数quit()退出当前的会话 ...
 - nodejs的基础概念
			
1.node 安装与相关配置. 2.Node.jsREPL(交互式解释器) 类似于控制台,可以输入命令,并接受系统的响应. REPL 的功能: 1.读取:读取用户输入,解析输入的 js 数据结构,并存 ...
 - 《android开发艺术探索》读书笔记(十四)--JNI和NDK编程
			
接上篇<android开发艺术探索>读书笔记(十三)--综合技术 No1: Java JNI--Java Native Interface(java本地接口),它是为了方便java调用C. ...
 - 【Elasticsearch全文搜索引擎实战】之集群搭建及配置
			
文中Elasticsearch版本为6.0.1 1. 环境配置 把环境配置放在第一节来讲,是因为很多人按官网的Getting Started安装运行会有各种错误.其实都是因为一些配置不正确引起的. 首 ...
 - Hibernate5环境搭建
			
1.导包 Hibernate开发包 数据库的驱动包 2.核心配置文件 核心配置文件(赋值到src下) 1.核心配置文件 对于hibernate的核心配置文件它有两种方式(选其中一种即可 ...
 - Linux中的DRM
			
如果在搜索引擎离搜索 DRM 映入眼帘的尽是Digital Rights Managemen,也就是数字版权加密保护技术.这当然不是我们想要的解释.在类unix世界中还有一个DRM即The Direc ...
 - Windows下基于ADS+J-Link 的ARM开发环境搭建
			
在一般ARM编程教学和实验环境里,一般采用 ADS加+并口转Jtag板+H-Jtag的开发环境.但是这种方法最大缺点是需要机器上有一个并口.现在无论PC还是笔记本都很难有并口,因此采用USB接口调试器 ...
 - 【linux】 LINUX FTP搭建
			
1.安装ftp服务 yum install vsftpd 2.编辑配置文件 vsftpd的配置文件有三个,分别是:/etc/vsftpd/vsftpd.conf/etc/vsftpd/ftpusers ...