关于session和cookie的简单理解


Posted in Javascript onJune 08, 2016

0. 引子,我们为什么要cookie和session

因为http请求是无状态的(不能记录用户的登录状态等),所以需要某种机制来保存用户的登录状态等信息,在下次访问web服务的时候,不用再次校验是否登录等状态,session机制和cookie机制分别是在服务器端和浏览器端的解决方案。

1.关于cookie

1.1  什么是cookie

cookie,原意饼干。用来在浏览器端存储用户的状态信息,然后在访问后端的时候将这部分信息带回到后端。

cookie的内容主要包括:名字,值,过期时间,路径和域

1.2 cookie的分类

会话cookie  不设置过期时间的cookie 保存在浏览器的内存中,关闭浏览器,cookie便被销毁。(常常被用作session)

普通cookie  设置了过期时间   保存在硬盘上

1.3怎么应用

发起请求时:浏览器检查所有存储的cookie,如果某个cookie所声明的作用范围(由路径和域决定)大于等于将要请求的资源所在的位置,则把该cookie附在请求资源的HTTP请求头上发送给服务器。

处理请求时:在服务器端, 一般会对请求头中带的cookie信息做检查(比如说登录检查),如果检查通过,才能进行实际的业务处理。

如果校验不通过,例如没有找到cookie或者cookie信息不正确(可能是伪造),跳转让其登录,然后登录完成之后,在响应中返回cookie信息,浏览器会根据返回的cookie信息,保存在硬盘或者内存中供下次使用。、

2.关于session

2.1什么是session

session 用来在服务器端保存用户的状态信息。

2.2怎么使用

浏览器发起请求时:服务器首先会读取请求头中session信息。如果没有找到session信息或者本地检索不到此sessionid,如果没有就新生成一个sessionid,存储到服务器硬盘或者memcache中。

浏览器接收到响应:会将这个返回的sessionID在本地内存也保存一份,供下一次请求使用。session保存在本地的其中一种实现方案是保存信息在cookie上,但是实际上cookie并不是session保存唯一解决方案,使用url重写的方式也可(把session id直接附加在URL路径的后面 )。

3.cookie和sessiond的主要区别

1、保存位置稍有区别

cookie数据存放在客户的浏览器上,服务器端不用保存。session数据放在服务器上,本地内存也有一份。

2、安全性不同

cookie安全性不如session。因为普通cookie保存在本地硬盘上,黑客可以伪造url等方式发起xss攻击,获取本地硬盘保存状态的cookie,进而窃取用户的敏感信息。

session则不同,只有在用户登录此网站时发起xss攻击才能获取session信息,关闭浏览器之后,session即被销毁,安全性较cookie要好

3.跨域支持上的不同

Cookie支持跨域名访问,例如将domain属性设置为“.biaodianfu.com”,则以“.biaodianfu.com”为后缀的一切域名均能够访问该Cookie。跨域名Cookie如今被普遍用在网络中,例如Google、Baidu、Sina等。而Session则不会支持跨域名访问。Session仅在他所在的域名内有效。

4.服务器压力的不同

Session是保管在服务器端的,每个用户都会产生一个Session。假如并发访问的用户十分多,会产生十分多的Session,耗费大量的内存。因而像Google、Baidu、Sina这样并发访问量极高的网站,是不太可能运用Session来追踪客户会话的。考虑到减轻服务器性能方面,应当使用COOKIE。

5. 存取方式的不同

Cookie中只能保管ASCII字符串,假如需求存取Unicode字符或者二进制数据,需求先进行编码。Cookie中也不能直接存取Java对象。若要存储略微复杂的信息,运用Cookie是比拟艰难的。

而Session中能够存取任何类型的数据,包括而不限于String、Integer、List、Map等。Session中也能够直接保管Java Bean乃至任何Java类,对象等,运用起来十分便当。能够把Session看做是一个Java容器类。

6.cookie的保存内容大小有限制

单个cookie保存的数据不能超过4K,很多浏览器都限制一个站点最多保存20个cookie。

以上这篇关于session和cookie的简单理解就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
jquery1.4 教程二 ajax方法的改进
Feb 25 Javascript
仅img元素创建后不添加到文档中会执行onload事件的解决方法
Jul 31 Javascript
Jqgrid设置全选(选择)及获取选择行的值示例代码
Dec 28 Javascript
js获取时间并实现字符串和时间戳之间的转换
Jan 05 Javascript
使用AngularJS创建单页应用的编程指引
Jun 19 Javascript
JavaScript的this关键字的理解
Jun 18 Javascript
JavaScript中removeChild 方法开发示例代码
Aug 15 Javascript
AngularJs directive详解及示例代码
Sep 01 Javascript
详解a++和++a的区别
Aug 30 Javascript
详解vue2.0+vue-video-player实现hls播放全过程
Mar 02 Javascript
Vue实现搜索结果高亮显示关键字
May 28 Javascript
springboot+vue+对接支付宝接口+二维码扫描支付功能(沙箱环境)
Oct 15 Javascript
jQuery封装的屏幕居中提示信息代码
Jun 08 #Javascript
Ext JS框架程序中阻止键盘触发回退或者刷新页面的代码分享
Jun 07 #Javascript
JavaScript基础语法之js表达式
Jun 07 #Javascript
JavaScript必看小技巧(必看)
Jun 07 #Javascript
通过正则表达式获取url中参数的简单实现
Jun 07 #Javascript
点击按钮出现60秒倒计时的简单js代码(推荐)
Jun 07 #Javascript
javascript显示倒计时控制按钮的简单实现
Jun 07 #Javascript
You might like
PHP中“简单工厂模式”实例代码讲解
2012/09/04 PHP
深入理解ob_flush和flush的区别(ob_flush()与flush()使用方法)
2013/02/06 PHP
深入php数据采集的详解
2013/06/02 PHP
php+ajax简单实现全选删除的方法
2016/12/06 PHP
PHP不使用内置函数实现字符串转整型的方法示例
2017/07/03 PHP
PHP基于堆栈实现的高级计算器功能示例
2017/09/15 PHP
js 第二代身份证号码的验证机制代码
2011/05/12 Javascript
javascript设计模式 封装和信息隐藏(上)
2012/07/24 Javascript
js中widow.open()方法使用详解
2013/07/30 Javascript
Jquery的hover方法让鼠标经过li时背景变色
2013/09/06 Javascript
JQuery+Ajax实现数据查询、排序和分页功能
2015/09/27 Javascript
详解javascript中原始数据类型Null和Undefined
2015/12/17 Javascript
javascript中Number的方法小结
2016/11/21 Javascript
微信小程序实现皮肤功能(夜间模式)
2017/06/18 Javascript
vue路由跳转时判断用户是否登录功能的实现
2017/10/26 Javascript
浅谈在Vue-cli里基于axios封装复用请求
2017/11/06 Javascript
cdn模式下vue的基本用法详解
2018/10/07 Javascript
微信小程序实现登录遮罩效果
2018/11/01 Javascript
详解vue中在循环中使用@mouseenter 和 @mouseleave事件闪烁问题解决方法
2020/04/07 Javascript
[14:51]DOTA2 HEROS教学视频教你分分钟做大人-卓尔游侠
2014/06/13 DOTA
python基础教程之popen函数操作其它程序的输入和输出示例
2014/02/10 Python
Python基础学习之常见的内建函数整理
2017/09/06 Python
python模块之paramiko实例代码
2018/01/31 Python
python实现名片管理系统项目
2019/04/26 Python
python集合的创建、添加及删除操作示例
2019/10/08 Python
详谈tensorflow gfile文件的用法
2020/02/05 Python
html+js 实现markdown编辑器效果
2019/10/23 HTML / CSS
Stefania Mode美国:奢华设计师和时尚服装
2018/01/07 全球购物
德国游戏机商店:Konsolenkost
2019/12/08 全球购物
银行先进个人事迹材料
2014/05/11 职场文书
工程负责人任命书
2014/06/06 职场文书
导游词开场白
2015/01/31 职场文书
计生个人工作总结
2015/02/28 职场文书
会计入职心得体会
2016/01/22 职场文书
《我要的是葫芦》教学反思
2016/02/18 职场文书
分享python函数常见关键字
2022/04/26 Python