好文推荐:http://blog.csdn.net/fangaoxin/article/details/6952954(Cookie/Session机制详解

Cookie的属性

name :cookie名称,一旦创建,不可改变

value :cookie值

maxAge:cookie失效时间,单位:秒。正数:该cookie在maxAge秒后失效,负数:为临时cookie,关闭浏览器即失效。0:删除该cookie.默认为-1.

secure:该cookie是否仅被使用安全协议传输。默认为false.

path:该cookie的使用路径。

domain:可以访问该cookie的域名。如果设置为“.google.com”,则所有以"google.com"结尾的域名都可以访问该cookie.

comment:该cookie的用处说明。

使用cookie的状态管理

---HTTP是无状态协议,它不对之前发生过的请求和响应的状态进行管理。也就是说,无法根据之前的状态进行本次的请求处理。

---假设要求登录认证的WEB页面本身无法进行状态的管理(不记录已登录的状态),那么每次跳转新页面不是要再次登录,就是要在每次请求报文中附加参数来管理登录状态。不可否认,无状态协议有它的优点,因为不必保存状态,自然可以减少服务器的CPU及内存资源的消耗。也正是因为HTTP协议本身是非常简单的,所以才会被应用到各个场景里。

---保留无状态协议这个特征的同时又要解决类似的矛盾问题,于是引入了cookie技术。Cookie技术是通过在请求和响应报文中写入cookie信息来控制客户端的状态。

---cookie会根据从服务器端发送的响应报文内的一个叫做Set-cookie的首部字段信息,通知客户端保存cookie。当下次客户端再往该服务器发送请求时,客户端会自动在请求报文中加入cookie值后发送出去。服务器端发送客户端发送来的cookie后,会去检查究竟是从哪一个客户端发送来的连接请求,然后对比服务器上的记录,最后得到之前的状态信息。

简单来说,就是

1.第一次请求(没有cookie信息状态下的请求)

浏览器:保存请求

服务器:生成cookie,记住是向谁发送的,在响应中添加cookie后返回

浏览器:保存cookie

2.第二次请求

浏览器:在请求中添加cookie后发送

服务器:检查cookie,哦,原来是刚才那家伙的请求,响应

Session机制

Web应用程序中另一个记录客户端状态的方式:Session。Session是服务器端使用的一种记录客户端状态的机制,会增加服务器的存储压力。

客户端浏览器访问服务器的时候,服务器把客户端信息以某种形式记录在服务器上,这就是Session。浏览器再次访问时只需要从该Session中查找该客户的状态就可以了。如果说Cookie机制是通过检查客户身上的通行证来确定客户的身份,那么Session机制就是通过检查服务器上的客户明细表来确认客户的身份。Session相当于程序在服务器上建立的一份客户档案,客户来访的时候只需要检查档案就可以了。当多个客户端执行程序时,服务器端会保存多个客户端的Session。获取Session的时候不需要声明获取谁的Session,Session机制决定了当前客户只会获取到自己的Session,而不会获取到别人的Session,各个Session彼此独立,互不相见。

Session 对浏览器的要求

虽然Session保存在服务器,对客户端是透明的,它的正常运作仍然需要客户端浏览器的支持。这是因为Session需要使用Cookie作为识别标志。http协议是无状态的,session不能依据http连接来判断是否为统一客户,因此服务器向浏览器发送一个名为JSESSIONID的cookie,它的值为该Session的id.Session依据该Cookie来识别是否为同一用户。

cookie和Session的更多相关文章

  1. Cookie和Session的总结

    1.开篇 在之前学习这一段的时候我一直有点没弄清楚,其实对Session这块的理解还可以,但是Cookie感觉始终还是欠缺点火候.之后的很长一段时间都基本上很少用Cookie了,渐渐的也淡忘了这一块的 ...

  2. java的会话管理:Cookie和Session

    java的会话管理:Cookie和Session 1.什么是会话 此处的是指客户端(浏览器)和服务端之间的数据传输.例如用户登录,购物车等 会话管理就是管理浏览器客户端和服务端之间会话过程产生的会话数 ...

  3. Cookie和Session的那些事儿

    Cookie和Session都是为了保持用户的访问状态,一方面为了方便业务实现,另一方面为了简化服务端的程序设计,提高访问性能.Cookie是客户端(也就是浏览器端)的技术,设置了Cookie之后,每 ...

  4. django的cookie和session以及内置信号、缓存

    cookie和session cookie和session的作用: cookie和session都记录了客户端的某种状态,用来跟踪用户访问网站的整个回话.两者最大的区别是cookie的信息是存放在浏览 ...

  5. Cookie和Session的区别

    前言 HTTP是一种无状态的协议,为了分辨链接是谁发起的,就需要我们自己去解决这个问题.不然有些情况下即使是同一个网站我们每打开一个页面也都要登录一下.而Session和Cookie就是为解决这个问题 ...

  6. 本地数据Store。Cookie,Session,Cache的理解。Timer类主要用于定时性、周期性任务 的触发。刷新Store,Panel

    本地数据Store var monthStore = Ext.create('Ext.data.Store', { storeId : 'monthStore', autoLoad : false, ...

  7. Cookie与Session

    再说Cookie与Session之前,先要了解一下http协议. 何为http协议: http协议即超文本传输协议,一种基于浏览器请求与服务器响应的协议,该协议主要的特点就是它是一种无状态的协议(只针 ...

  8. 【转】Cookie和Session区别和联系详解

    会话(Session)跟踪是Web程序中常用的技术,用来跟踪用户的整个会话.常用的会话跟踪技术是Cookie与Session.Cookie通过在客户端记录信息确定用户身份,Session通过在服务器端 ...

  9. 理解Cookie和Session机制(转)

    目录[-] Cookie机制 什么是Cookie 记录用户访问次数 Cookie的不可跨域名性 Unicode编码:保存中文 BASE64编码:保存二进制图片 设置Cookie的所有属性 Cookie ...

  10. cookie 和session 的区别详解

    这些都是基础知识,不过有必要做深入了解.先简单介绍一下. 二者的定义: 当你在浏览网站的时候,WEB 服务器会先送一小小资料放在你的计算机上,Cookie 会帮你在网站上所打的文字或是一些选择, 都纪 ...

随机推荐

  1. 错误400-The request sent by the client was syntactically incorrect

    springMVC中,某个页面提交时报400错误,如下图.     解决方法: 1.在网上找了一下,答案是通常遇到这个错误是因为前端jsp页面的控件名称和controller中接收的参数名称不一致.但 ...

  2. DDNS动态更新

    /// <summary> /// DnsPod DDNS工具类 /// </summary> public class DDNSToolkit { private stati ...

  3. 冰冻三尺非一日之寒--web来了

    第十四章    html  css 1-1Html和CSS的关系学习web前端开发基础技术需要掌握:HTML.CSS.JavaScript语言.下面我们就来了解下这三门技术都是用来实现什么的:1. H ...

  4. Leetcode 55. Jump Game

    我一开始认为这是一道DP的题目.其实,可以维护一个maxReach,并对每个元素更新这个maxReach = max(maxReach, i + nums[i]).注意如果 i>maxReach ...

  5. 使用hexo,如果换了电脑怎么更新博客?

    自己今天想到这个问题,于是去知乎搜索了一番,发现不甚理想.没找到合适的,题目就是知乎原题.只好自己解决了.以下直接把自己的答案粘贴过来 今天我突然想到这个问题,想来参考参考,却发现都不太适合我.首先, ...

  6. keylogger

    import pyHookimport sysimport pythoncomimport loggingfile_log = 'C:\\important\\log.txt'def OnKeyboa ...

  7. @Column

    @Column标记表示所持久化属性所映射表中的字段,该注释的属性定义如下: @Target({METHOD, FIELD}) @Retention(RUNTIME) public @interface ...

  8. C# GetType与typeof

    在反射和泛型中经常会使用到Type类,获取Type的最常用的方法是 obj.GetType(),和typeof(T).在获取泛型的type时有些小坑. public static void Main( ...

  9. php事务

    <?php set_time_limit(); function sel($time,$number,$count){ ){ sel($time,$number,$count); return ...

  10. Java集合之ArrayList

    ArrayList ArrayList是最常见以及每个Java开发者最熟悉的集合类了,顾名思义,ArrayList就是一个以数组形式实现的集合,以一张表格来看一下ArrayList里面有哪些基本的元素 ...