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的更多相关文章

  1. 简单说下cookie,LocalStorage与SessionStorage.md

    最近在网上看到有人讨论这三个的一些概念与区别,发现自己也一直没有较好的总结,所以查阅了一些资料来阐述一下. 基本概念 cookie cookie英文意思是小甜饼,是原来的网景公司创造,目前是在客户端存 ...

  2. forms组件补充与ModelForm简单使用与cookie与session

    目录 forms组件钩子函数 forms组件字段参数 字段参数 validators详解 choices详解 widget详解 forms组件字段类型 ModelForm简单使用 cookie与ses ...

  3. 使用cookie/session实现简单的用户信息的保存

    cookie一般用来存储非关键信息 , 用户名和密码等敏感信息一般采用session 来存储:cookie和session的最大区别是当服务器端存储session 之后,用户再次请求时候只是请求了一个 ...

  4. cookie&session&servletContext

    一.cookie VS session 1)应用场景 cookie可以用于: 记录用户上次登录的时间 记住用户名和密码 session可以用于: 防止非法登录(即直接跳转到本来需登录验证方可登录的页面 ...

  5. 微服务架构下分布式Session管理

    转载本文需注明出处:EAII企业架构创新研究院(微信号:eaworld),违者必究.如需加入微信群参与微课堂.架构设计与讨论直播请直接回复此公众号:“加群 姓名 公司 职位 微信号”. 一.应用架构变 ...

  6. Servlet学习笔记(1)--第一个servlet&&三种状态对象(cookie,session,application)&&Servlet的生命周期

    servlet的404错误困扰了两天,各种方法都试过了,翻书逛论坛终于把问题解决了,写此博客来纪念自己的第一个servlet经历. 下面我会将自己的编写第一个servlet的详细过程提供给初学者,大神 ...

  7. Cookie Session Cache

    二. 工作机制 Ø Cookie :采用的是客户端保存信息的方案. Ø Session :采用服务器端保存信息的方案. Ø Cache :利用缓存 SRAM 来"静态"的保存写入信 ...

  8. php会话控制cookie/session

    设置cookie PHP设置Cookie最常用的方法就是使用setcookie函数,setcookie具有7个可选参数,我们常用到的为前5个: name( Cookie名)可以通过$_COOKIE[' ...

  9. 集群环境下的Session共享

    一.Cookie机制和Session机制回顾 1)定义:Session成为“会话”,具体是指一个终端用户与交互系统进行通信的时间间隔,通常指从注册进入系统到注销退出系统之间所经过的时间.Session ...

随机推荐

  1. vim插件安装总结

    vim插件安装总结 vim 插件 vundle 插件对于vim来说是一个杀手级别的神器助手,能自动补全,语法高亮,文件搜索等等,有效地提升了编程效率.下面就个人的一些安装和使用进行一个总结. 自动管理 ...

  2. Angular CurrencyPipe货币管道关于人民币符号¥的问题

    做项目(Angular项目)时经常需要处理金额的显示,需要在金额前面加上¥,但又不想用简单在前面加"¥"这么不优雅的方式,于是想到了CurrencyPipe.毕竟,Currency ...

  3. HDU - 3567 IDA* + 曼哈顿距离 + 康托 [kuangbin带你飞]专题二

    这题难度颇大啊,TLE一天了,测试数据组数太多了.双向广度优先搜索不能得到字典序最小的,一直WA. 思路:利用IDA*算法,当前状态到达目标状态的可能最小步数就是曼哈顿距离,用于搜索中的剪枝.下次搜索 ...

  4. nginx的环境配置的问题

    在安装好nginx之后,运行nginx,报错: nginx dyld: Library not loaded: /usr/local/lib/libpcre.1.dylib Referenced fr ...

  5. sqoop:mysql和Hbase/Hive/Hdfs之间相互导入数据

    1.安装sqoop 请参考http://www.cnblogs.com/Richardzhu/p/3322635.html 增加了SQOOP_HOME相关环境变量:source ~/.bashrc  ...

  6. Lua Table转C# Dictionary

    因为在游戏公司做web后台开发,经常会涉及到取游戏服务器的数据库里面读写各种操作. 昨天下午,服务器那边让我读一个配置显示到后台,让运营大佬们可以在web后台配置游戏参数. 本来以为很简单个事情,结果 ...

  7. linux web服务器及LAMP动态网站平台搭建

    (vim补:)vim另存为:x,x w 目标文件路径vim批量删除x:x,x d Web服务:基于B/S架构的web通信服务端:支持HTTP协议的网页提供程序客户端:按标记规范显示网页的浏览器程序客户 ...

  8. Linux定时器 timerfd使用

    英文使用手册原汁原味,一手资料. NAME       timerfd_create, timerfd_settime, timerfd_gettime - timers that notify vi ...

  9. 3.1 PCI设备BAR空间的初始化

    在PCI Agent设备进行数据传送之前,系统软件需要初始化PCI Agent设备的BAR0~5寄存器和PCI桥的Base.Limit寄存器.系统软件使用DFS算法对PCI总线进行遍历时,完成这些寄存 ...

  10. 错误代码: 1054 Unknown column 't.createUsrId' in 'group statement'

    1.错误描述 1 queries executed, 0 success, 1 errors, 0 warnings 查询:select count(t.id),t.`createUserId` fr ...