浅谈cookie和session
Cookie简介
Cookie(复数形态Cookies),中文名称为“小型文本文件”,指某些网站为了辨别用户身份或存储用户相关信息而存储在用户本地终端(Client Side)
上的数据(通常为加密数据)。比如用户ID、密码、浏览过的网页等。
Cookie特点:
- 保存在客服端,一般由浏览器存储。
- 通常加密存储,由于存储本地,难保证安全,所以不宜存敏感信息
- 服务器决定保存的Cookie信息及时间。
说明:响应报文头中,有一个Set-Cookies域,用于指示浏览器或其他客户端,在本地保存Cookie信息
- Cookie保存在客户端本地的目的是为了下次访问网站时,可以直接调取,上送服务器。
说明:请求报文中,有一个cookies域专门用于存放该信息,以便客户端发送Cookie信息给服务器。如下图所示:

Session简介
1. 为什么会出现session:
Cookies的工作机制是用户识别和状态管理(比如保存用户的用户名、邮箱、地址等等),web网站为了管理用户的状态,通过web浏览器把一些数据,作为Cookies信息临时写入用户的计算机内,当用户再次访问web网站时,会将之前保存的Cookies(假如没有过期的话)取出来,发送给web网站,就实现了用户识别和状态管理。
这种机制的缺点:
- 数据保存在客户端本地,不安全
- 每次访问都要发送保存的Cookies数据,当网络访问量大的时候,会浪费网络带宽。
与Cookies不同的是,Session数据保存在服务端,一般存在服务器内存中。客户端与服务器通过一个SessionID来进行沟通,为了唯一,这个SessionID是一个32或48字节的随机字符串。
2. SessionID的传送过程:
当客户端首次登录web系统后,web系统会通过响应报文,返回给客户端一个Key-Value格式的sessionID,当客户端第二次通过对web系统发起请求的时候,只要带上这个SessionID,web系统的服务端就能够通过这个SessionID在内存中找到这个客户端对应的客户信息和状态。
3. SessionID缺点:
- 内存消耗大。
- 当web系统是多个节点的分布式系统时,需要做一些特殊设计和处理才能实现Session内容多节点的共享
Cookie和session的区别:
数据存储方式:
- Cookie数据保存在客户端浏览器中。
- Session数据保存在服务器内存中。
安全性:
- Session存储数据相对Cookie 存储数据更安全。
资源占用:
- Cookie 在网路访问量大时对网络带宽消耗较大。
- Session内存消耗较大,且在分布式系统中,要实现Session多节点共享比较麻烦。
Cookie和session工作原理示意图:

浅谈cookie和session的更多相关文章
- 浅谈cookie 和session 的区别
具体来说 cookie 是保存在“客户端”的,而session是保存在“服务端”的 cookie 是通过扩展http协议实现的 cookie 主要包括 :名字,值,过期时间,路径和域: 如果cooki ...
- (进阶篇)浅谈COOKIE和SESSION关系和区别
COOKIE介绍 cookie 常用于识别用户.cookie 是服务器留在用户计算机中的小文件.每当相同的计算机通过浏览器请求页面时,它同时会发送 cookie.通过 PHP,您能够创建并取回 coo ...
- 浅谈cookie与session的区别
cookie用的是在客户端保持状态的方案(它是在用户端的会话状态的存贮机制),前端也可以来设置他 所有浏览器都识别,并且会缓存在浏览器中. cookie是以key=value这种键值对的形式保存,每个 ...
- 浅谈cookie、session
揭秘Cookie: cookie说的直白点就是保存在用户浏览器端的一个键值对,举个例子,你现在登录了京东商城,你把浏览器关闭之后,你再打开京东,你还是可以对你的账户继续操作,已经购买的商品,订单都是可 ...
- 浅谈Cookie、Session与Cache的区别
以前实现数据的缓存有多种方法,如客户端的Cookie,服务器端的Session.Application. 一.Cookie Cookie是保存客户端的一组数据,主要用来保存用户的个人信息,主要存放浏览 ...
- 浅谈cookie 和 session
一. cookie 定义:保存在浏览器本地上的一组组键值对 特点: 由服务器让浏览器进行设置的 浏览器保存在浏览器本地 下次访问时自动携带 应用: 登录 保存浏览习惯 简单的投票 使用cookie的原 ...
- 浅谈 cookie 和 session
1.关闭浏览器后,session是否还存在? session在服务器和客户端各保留一个副本,关闭浏览器与否和session是否存在没有任何关系. session采取的是服务器端保持状态的方案,它存储在 ...
- 浅谈Cookie与Session技术
一.什么是状态管理 将客户端与服务器之间多次交互当做一个整体来看,并且将多次交互所涉及的数据(状态)保存下来. 会话:当用户打开浏览器,访问多个WEB资源,然后关闭浏览器的过程,称之为一个会话,选 ...
- 浅谈cookie测试
Cookie 提供了一种在Web 应用程序中存储用户特定信息的方法,例如存储用户的上次 访问时间等信息.假如不进行cookie存储一个网站的用户行为,那么可能会造成以下问题:用户进行购买几件商品转到结 ...
随机推荐
- Java语法细节 - synchronized和volatile
目录 synchronized关键字 关键字volatile synchronized关键字 synchronized关键字锁住方法和this的不同之处: public synchronized vo ...
- Java基础——关于jar包的知识
在学习jar包之前,要先弄懂Java包,以及关于Java包的相关概念. 一.包 为了更好地组织类,Java提供了包机制.包是类的容器,用于分隔类名空间.如果没有指定包名,所有的示例都属于一个默认的无名 ...
- CSS面试细节整理(二)
5.css盒模型: CSS 框模型 (Box Model) 规定了元素框处理元素内容.内边距.边框 和 外边距 的方式
- mysql 删除指定字符
mysql 删除指定字符 1.1 前言 实际需求中如果想删除指定的字符,一般需要使用到trim函数.trim函数默认删除字符的前后空格,如果想指定删除特定字符,则需要使用一下语句进行声明 ...
- Windows获取进程完整路径
#include <stdio.h> #include <locale.h> #include <windows.h> #include <tlhelp32. ...
- 【开源项目】电视盒子好用又强大的APP: TVRemoteIME
TVRemoteIME 电视盒子的远程输入法应用,可跨屏远程输入.跨屏远程控制盒子.远程文件管理.HTTP/RTMP/MMS网络视频直播.ED2K/种子文件的视频文件边下边播 应用的诞生 自从家里有电 ...
- [Swift]LeetCode654. 最大二叉树 | Maximum Binary Tree
Given an integer array with no duplicates. A maximum tree building on this array is defined as follo ...
- [Swift]LeetCode889. 根据前序和后序遍历构造二叉树 | Construct Binary Tree from Preorder and Postorder Traversal
Return any binary tree that matches the given preorder and postorder traversals. Values in the trave ...
- 【Spark篇】---SparkSQL on Hive的配置和使用
一.前述 Spark on Hive: Hive只作为储存角色,Spark负责sql解析优化,执行. 二.具体配置 1.在Spark客户端配置Hive On Spark 在Spark客户端安装包下sp ...
- C# 获取 ipv4的方法
NetworkInterface[] nics = NetworkInterface.GetAllNetworkInterfaces(); foreach (NetworkInterface adap ...