网上有很多关于cookies和session的资料和讨论,但是基本上没有能形象的、系统的、完善的说清楚这两个概念的,所以决定写一篇关于cookies和session的文章
cookies
<1>首先说明,cookies是客户端上的数据,cookies数据是由客户端浏览器读写的,表现形式为cookies文件,cookies文件里保存着cookies数据;
<2>客户端每个浏览器都有其自己的cookie,这点要注意。相对于服务端,每个浏览器代表着一个客户端,而并不是一台客户电脑代表一个客户端,在开发过程中,有很多概念是相对的,比如,全局、并发、阻塞、事物等等都些相对的概念,分析具体情况的时候,要确认目前所处的层面和环境。所以,若果你电脑上装了多个浏览器firefox、chrome、ie等等吧,每个浏览器都有自己的cookies文件,每个浏览器也只能读写自己的cookies数据,并且具体的读写处理也不一样。举个例子,chrome的所有cookies数据是存放在一个文件中的,并且做了加密处理,所以chrome写cookies时会加密,读cookies会解密,如果你用文本处理工具打开chorme的cookies会发现乱码看不懂,就是因为chrome加密了不让你看,只有它自己懂;IE的cookies是分好多文件的,也没做加密处理,记事本打开就能看懂。
<3>再一点,就是大家要理清一个概念:cookies是浏览器保存的数据,跟服务器没有直接的关系,cookies要跟服务器扯关系的话也只是间接的,他们之间由浏览器作为桥梁。网上很多资料、包括很多书上讲
没错,这个说法是对的,但是,这只说明了cookies技术的初衷,其中隐藏的很多具体东西没有说清楚。
<4>我要给大家提个问题:浏览器给服务器发送数据,发送的数据从何而来??大家都明白,用户输入表单提交啊,url带上查询串啊。这只是发送数据的一部分,不全,那另一部分从何而来呢,从cookies。当浏览器不禁用cookies的时候,浏览器每一次的WEB请求,都会自动读取cookies数据发送给服务器。
<5>那cookies数据是怎么发送给服务器的??cookies数据在浏览器读取后,放在http请求头里边发给服务器,所以cookies是有长度限制的,原因就是http协议头有长度限制。
<6>浏览器端运行的JS提供了cookies的读写能力。JS读写cookies的知识就不在这说了,感兴趣的自己查下吧。
<7>前面说了,cookies数据是浏览器直接读写的,跟服务器的关系只是间接的,但是,做过WEB开发的都知道,服务器端代码有写cookies的能力,其中的纽带就是浏览器、http请求头/响应头、WEB服务器。WEB服务器给服务端语言提供接口,让服务端语言有修改设置http响应头的能力,cookies数据只是http头中的一部分。
<8>通过前边分析,大家应该这样理解cookies:cookies是http头的一部分,属于http协议的范畴,所谓客户端的cookies文件,只是浏览器将cookies持久存储,以便再用。
说cookies就会提到session,大家肯定经历过面试环节这样的提问:“cookies和session的区别?”,我比较讨厌这个问题的问法。cookies和session不是一个层面上的东西,无法像“这女孩比那女孩好看”这样比较,只能讨论之间的联系。接下来说分析session。
session
<1>session存储在服务端。每个应用服务器都有自己的session,比如一台机器上装了两服务器:php、asp.net,各有各的seesion存储。这里要提醒初学者,服务器和服务机器是两个概念。
<2>服务器开启session的话,服务端(准确来说是WEB服务器)会为每个请求的客户端生成一个ID,站在服务器的角度讲,这个ID就是客户端的标识、身份证,服务端可以将一些执行过程的数据下挂到这个ID下保存起来,比如,php会为每个客户端建立以ID为文件名的文件,里边存放数据,这就是session。
<3>理解session的时候,要分两部分分析,sessionID、session数据。
<4>大家想下,sessiion会有哪些用??页面传值?下次请求用?还有呢??
未完待续……
相关推荐
Session和Cookies的区别
Session与CookiesSession与CookiesSession与Cookies
ASP.NET状态管理(Cookies,Session,ViewState,Application...)
1. cookies 和 session 的区别?(1).md
测试的过程中,经常会有这样的疑惑,什么是Cookie,什么是Session什么是Token,三者的区别又是什么,又是怎么使用的呢,这个文档跟大家详细介绍下三者的区别与使用
Application session cookies用法
浅析http协议、cookies和session机制、浏览器缓存.docx
session机制与cookie机制。 这个是在人家博客上摘下来的,感觉写得不错,讲得很容易理解。
本文实例讲述了asp.net网站防恶意刷新的Cookies与Session解决方法,是WEB程序设计中非常实用的技巧。分享给大家供大家参考。具体实现方法如下: Session版实现方法: public double time; public const int ...
代码同时可以用来验证Session和Cookies的登录的方式,只要稍微改动一下就可以再增加一个允许用户勾选的是否记住登录状态的选项。 下面是验证 /// /// 新的用户登录方式包括Session登录方式和Cookies登录方式 ///...
本文实例讲述了Django项目开发中cookies和session的常用操作。分享给大家供大家参考,具体如下: COOKIES操作 检查cookies是否存在: request.COOKIES.has_key('<cookie>') 获取cookies: request.COOKIES.get('...
大概思路就是借助小程序本地储存+网络请求的header可读可写来实现类似浏览器的cookies保存session功能。 直接上代码 function NetRequest({url, data, success, fail, complete, method = POST, header = { '...
关于asp.net的需要讲解,对session and cookies的讲解很精简。
某培训机构资料,对于深入了解Cookie&Session;机制有帮助
#3.1_Post_登录_Cookies_Session_都用_Requests_(爬虫_scraping_基础_Tutoria
var session = new Session(cookies);//init session with cookies console.log("sessionId = " session.sessionId); session.set("userId", 123); session.set("userName", "Jhon"); ...
Session cookies说 欢迎下载。+++++++++++++++++++++++++++++
讲了一些对象的作用和用法,对初学中很有帮助