在很久很久以前,刚有浏览器和网页的时候,web开发者发现了一个问题,我必须要在客户端这边保存一些东西才能实现某些功能,比如大家喜闻乐见的购物车、用户登录、自动登陆等。但是客户端只有一个浏览器,怎么在用户也就是客户端那边保存数据呢?于是大佬们一拍桌子,Cookie就诞生了!
我把Cookie理解为一个键-值形式存储再加上有效时间的一个容器,除此之外Cookie还有一个作用范围的概念(作用范围指的是域和路径,域的意思是根域名和端口,除非在设置cookie的时候特别指定域名),可以认为在同一个域里面的页面共享Cookie。Cookie的获取和设置命令都是写在 HTTP 请求或者响应头里的(也就是你要是已经开始发 HTTP 响应正文之后就不能对 Cookie 做写操作了)。
但是 Cookie 保存在浏览器本地就有个问题,这TM是明文的,容易被别有用心的软件看到。 而且不能随心所欲的更改和读取。
于是大佬们又一拍桌子就发明了Session,

Session 和 Cookie 一样也是以键值对的形式存取,只是保存的地方不一样,Cookie保存在用户端(也就是浏览器,或者是其他什么HttpClient里),但是Session的内容是保存在服务器上的。
这样就有个问题,服务器怎么知道哪个客户端对应哪个Session?

于是就在浏览器放一个叫做 SessionID 的东西用Cookie保存。

所以当你在JSP里打开了session之后,你会发现在浏览器的cookie里会多一个JSESSIONID=xxx的一个cookie项,
当然这是默认的键名,你需要的话可以改。
 
总结,Cookie和Session的用途和存储方式差不多,只是一个存储在客户端,一个存储在服务端,Session 既然存放在服务端,为了标识客户端,就在客户端的Cookie里放置一个SessionID,在使用上Session更灵活更安全。
欢迎补充与纠错。
 
本博客内容与代码均为作者Jarvis原创,如若转载请注明。

Session与Cookie间不得不说的一些事的更多相关文章

  1. 详解SESSION与COOKIE的区别

    在PHP面试中 经常碰到请阐述session与cookie的区别与联系,以及如何修改两者的有效时间. 大家都知道,session是存储在服务器端的,cookie是存储在客户端的,session依赖于c ...

  2. Session和Cookie深度剖析

    Session和Cookie的区别 具体来说cookie机制采用的是在客户端保持状态的方案,而session机制采用的是在服务器端保持状态的方案.同时我们也看到,由于采用服务器端保持状态的方案在客户端 ...

  3. node.js web开发:EXPRESS 4.x 以上使用session和cookie 的记录

    关于session 和cookie 我搞了2-3天, 发现这个玩意也挺麻烦的. 很多教程都是把这种会话保存在nosql里面,比如mongo,或者redis等等.但是我还是想直接保存在计算机的内存中,比 ...

  4. Session,Cookie,jsessionid,Url重写

    在一些投票之类的场合,我们往往因为公平的原则要求每人只能投一票,在一些WEB开发中也有类似的情况,这时候我们通常会使用COOKIE来实现,例如如下的代码: < % cookie[]cookies ...

  5. session和cookie详解2

    http 之session和cookie http://www.cnblogs.com/ForEverKissing/archive/2008/05/23/1205503.html Session简介 ...

  6. 【转】session和cookie详解

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

  7. Session和Cookie总结

    一.Session和Cookie 1.Cookie 1.cookie创建于服务器,保存于浏览器,保存了特定网站操作记录和资料凭证的信息. 2.未设置cookie期限的时候,默认是关闭浏览器后cooki ...

  8. (转)浅谈Session与Cookie的区别与联系

    一.Session的概念 Session 是存放在服务器端的,类似于Session结构来存放用户数据,当浏览器 第一次发送请求时,服务器自动生成了一个Session和一个Session ID用来唯一标 ...

  9. session 和 cookie (转)

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

随机推荐

  1. Python一路走来 DAY15 Javascript

    JavaScript是一门编程语言,浏览器内置了JavaScript语言的解释器,所以在浏览器上按照JavaScript语言的规则编写相应代码之,浏览器可以解释并做出相应的处理. 一 如何编写     ...

  2. 第一个微信小程序(实现点击一个按钮弹出toast)

    今天根据网上的教程搭建了微信小程序的环境,然后看文档做了一个简单的小应用. 项目的目录是这个样子的: app.js.app.json.app.wxss是全局文件,必不可少的文件.定义在app.wxss ...

  3. 关于取url或者微信中参数的js

    今天遇到这么个情况,因为是第一次弄,所以在这里做了个记录,因为要弄过二维码的功能,要获取里面的参数并传给后台,所以要对二维码里面的地址进行过滤.刚开始是很惆怅的,因为之前没弄过,原以为可以通过spli ...

  4. 【转】Windows SDK入门浅谈

    前言 如果你是一个编程初学者,如果你刚刚结束C语言的课程.你可能会有点失望和怀疑:这就是C语言吗?靠它就能编出软件?无法想象Windows桌面上一个普通的窗口是怎样出现在眼前的.从C语言的上机作业到W ...

  5. Codeforces 526E Transmitting Levels

    http://codeforces.com/contest/526/problem/E 题意:给一个环,每个点有权值,每次给一个数B,求把这个环切割成若干部分,每个部分不超过B,至少要切成几块? #i ...

  6. ultraedit删除空行(含空格,tab,制表符等怪字符)

    打开ultraedit,ctrl+r弹出替换对话框,点选启用正则表达式 在查找框输入 ^p^p 在替换框输入  ^p 仍有部分空行还在,继续处理: 查找框中输入:%[ ^t]++^p,注意^t之前有空 ...

  7. Cmake编译成静态库

    To build OpenCV as static library you need to set BUILD_SHARED_LIBS flag to false/off: cmake -DBUILD ...

  8. op+3g

    https://forum.openwrt.org/viewtopic.php?id=44895 http://eko.one.pl/forum/viewtopic.php?id=10269 http ...

  9. Linux企业级项目实践之网络爬虫(9)——通过URL抓取网页内容

    基本URL包含模式(或称协议).服务器名称(或IP地址).路径和文件名,如"协议://授权/路径?查询".完整的.带有授权部分的普通统一资源标志符语法看上去如下:协议://用户名: ...

  10. HDU3564 --- Another LIS (线段树维护最值问题)

    Another LIS Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total ...