二者的定义:

当你在浏览网站的时候,WEB 服务器会先送一小小资料放在你的计算机上,Cookie 会帮你在网站上所打的文字或是一些选择,

都纪录下来。当下次你再光临同一个网站,WEB 服务器会先看看有没有它上次留下的 Cookie 资料,有的话,就会依据 Cookie

里的内容来判断使用者,送出特定的网页内容给你。 Cookie 的使用很普遍,许多有提供个人化服务的网站,都是利用 Cookie

来辨认使用者,以方便送出使用者量身定做的内容,像是 Web 接口的免费 email 网站,都要用到 Cookie。

具体来说cookie机制采用的是在客户端保持状态的方案,而session机制采用的是在服务器端保持状态的方案。

简单的来说就是浏览器保持开启的状态的时候cookie会一直保存你的资料在浏览器上,而session则会在服务器端保存你的资料,

一般session的保存的时间很长,就比如我们经常看到的20天免登陆这样一个东西。

同时我们也看到,由于采用服务器端保持状态的方案在客户端也需要保存一个标识,所以session机制可能需要借助于cookie机制

来达到保存标识的目的,但实际上它还有其他选择。

cookie机制。正统的cookie分发是通过扩展HTTP协议来实现的,服务器通过在HTTP的响应头中加上一行特殊的指示以提示

浏览器按照指示生成相应的cookie。然而纯粹的客户端脚本如JavaScript或者VBScript也可以生成cookie。而cookie的使用

是由浏览器按照一定的原则在后台自动发送给服务器的。浏览器检查所有存储的cookie,如果某个cookie所声明的作用范围

大于等于将要请求的资源所在的位置,则把该cookie附在请求资源的HTTP请求头上发送给服务器。
 
cookie的内容主要包括:名字,值,过期时间,路径和域。路径与域一起构成cookie的作用范围。若不设置过期时间,则表示这

个cookie的生命期为浏览器会话期间,关闭浏览器窗口,cookie就消失。这种生命期为浏览器会话期的cookie被称为会话cookie。

会话cookie一般不存储在硬盘上而是保存在内存里,当然这种行为并不是规范规定的。若设置了过期时间,浏览器就会把cookie

保存到硬盘上,关闭后再次打开浏览器,这些cookie仍然有效直到超过设定的过期时间。存储在硬盘上的cookie可以在不同的浏

览器进程间共享,比如两个IE窗口。而对于保存在内存里的cookie,不同的浏览器有不同的处理方式

session机制。session机制是一种服务器端的机制,服务器使用一种类似于散列表的结构(也可能就是使用散列表)来保存信息。

当程序需要为某个客户端的请求创建一个session时,服务器首先检查这个客户端的请求里是否已包含了一个session标识

(称为session id),如果已包含则说明以前已经为此客户端创建过session,服务器就按照session id把这个session检索出来

使用(检索不到,会新建一个),如果客户端请求不包含session id,则为此客户端创建一个session并且生成一个与此session相

关联的session id,session id的值应该是一个既不会重复,又不容易被找到规律以仿造的字符串,这个session id将被在本次响应

中返回给客户端保存。保存这个session id的方式可以采用cookie,这样在交互过程中浏览器可以自动的按照规则把这个标识发送给

服务器。一般这个cookie的名字都是类似于SEEESIONID。但cookie可以被人为的禁止,则必须有其他机制以便在cookie被禁止时

仍然能够把session id传递回服务器。

经常被使用的一种技术叫做URL重写,就是把session id直接附加在URL路径的后面。还有一种技术叫做表单隐藏字段。就是服务器

会自动修改表单,添加一个隐藏字段,以便在表单提交时能够把session id传递回服务器。比如: 
<form name="testform" action="/xxx"> 
<input type="hidden" name="jsessionid" value="ByOK3vjFD75aPnrF7C2HmdnV6QZcEbzWoWiBYEnLerjQ99zWpBng!-145788764"> 
<input type="text"> 
</form> 
实际上这种技术可以简单的用对action应用URL重写来代替。

cookie 和session 的区别:

1、cookie数据存放在客户的浏览器上,session数据放在服务器上。

2、cookie不是很安全,别人可以分析存放在本地的COOKIE并进行COOKIE欺骗
   考虑到安全应当使用session。

3、session会在一定时间内保存在服务器上。当访问增多,会比较占用你服务器的性能
   考虑到减轻服务器性能方面,应当使用COOKIE。

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

5、所以个人建议:
   将登陆信息等重要信息存放为SESSION
   其他信息如果需要保留,可以放在COOKIE中

转载于:https://www.cnblogs.com/ljy0414/p/11107223.html

cookie 和 session 区别相关推荐

  1. cookie与session区别|详细版

    cookie与session区别|详细版,VMlogin浏览器支持cookie导入导出吗 Cookie: Cookies是服务器在本地机器上存储的小段文本并随每一个请求发送至同一个服务器.IETF R ...

  2. Cookie和Session区别

    Cookie和Session区别 1.Session比Cookie安全,Session是存储在服务端的,Cookie是存储在客户端的. 2.Cookie只支持存储字符串数据,Session可以存任意数 ...

  3. HTTP 的 GET/POST区别 及 cookie 和 session 区别

    1.HTTP GET/POST 区别 常见的 HTTP 方法:GET / POST / PUT / DELETE    GET 经常用来获取操作,POST 用来做创建操作.PUT更新.DELETE 删 ...

  4. web存储中cookie、session区别

    http协议是一种无状态的协议,浏览器对服务器的每一次请求都是独立的.为了使得web能够产生一些动态信息,就需要保存"状态",而cookie和session机制就是为了解决http ...

  5. php会话控制区别和流程,PHP会话控制:cookie和session区别与用法深入理解_后端开发...

    PHP Swoole 基本使用_后端开发 Swoole是php的一个异步.并行.高性能的网络通信引擎,可以用Swoole做一些想http.websocket的服务器,Swoole提供了异步多线程服务器 ...

  6. cookie与session区别

    我们计算机中有两个机制,他们有一种类似于跟踪信息的技术,懂的都懂,第一时间相信各位想到的cookie与session了 首先,先清楚这两者的定位,Cookie通过在客户端记录信息确定用户身份,Sess ...

  7. 浏览器禁用cookie后session还能用吗?cookie与session区别

    答:浏览器禁用cookie后session不能正常使用. cookie是一种客户端的会话技术,它是服务器存放在浏览器的一小份数据,浏览器以后每次访问该服务器的时候都会将这小份数据携带到服务器去. se ...

  8. cookie、Session、Token、sessionStorage、localStorage简介__Token放在 cookie, sessionStorage 和 localStorage中区别

    cookie.Session.Token.sessionStorage.localStorage简介 cookie 是一个非常具体的东西,只得是浏览器里永久存储的一种数据,是浏览器实现的一种数据存储功 ...

  9. 什么是Cookie和Session?—— Cookie和Session的区别?—— 一文教你理解清楚什么是Cookie和Session,以及常见的开发面试问题?

    cookie和session区别 cookie和session 背景说明 1.cookie 1.1.定义 1.2.作用 1.3.组成(种类和参数) 1.3.1.会话 Cookies .永久性 Cook ...

最新文章

  1. nginx做方向代理不显示图片的问题
  2. bat基础学习--bat批量执行其他bat(startcall),bat执行后暂停(调试)关闭,批量执行关闭exe----基础
  3. 杀鸡焉用牛刀!放下Windbg,让dotnet-stack来快速定位死锁原因
  4. MATLAB基础教程(2) 语言基础知识
  5. 安卓音量阶数修改_16款手机UI随便用,音量调节原来可以这样玩
  6. ADKAR模型简介(转)
  7. 浏览器输入baidu.com之后跳转到baidu.com/?tn=92363592_hao_pg在跳转回百度解决方案
  8. 【未来iPhone 手机中将加入卫星通信功能?】
  9. 中国各城市首轮感染高峰期预测!(最新更新版)
  10. 快速入门Web前端开发
  11. 推荐几款云服务器上搭建属于自己的私人网盘
  12. android 动画引擎,用 Android 实现一条小金鱼游动动画(超棒)
  13. 财险商闭口不提交强险利润
  14. 使用echarts中国地图添加气泡时使用接口访问的数据不显示
  15. 如何挑选合适自己的内存
  16. 一个golang编写的redis内存分析工具rma4go
  17. 变年轻特效是什么软件?快把这些软件收好
  18. Pycharm 打印大数据文件显示不全的解决方法
  19. c语言 试题 中荷,2017年东北大学中荷生物医学与信息工程学院842计算机专业基础考研强化模拟题...
  20. 11个网络工程师必备实用软件,别说一口君藏私不告诉你

热门文章

  1. flutter 拖拽布局_Flutter 史上最牛拖动控件 Draggable
  2. mongodb 集群shard_mongodb集群构建方案(二)
  3. signature=b21ede5d7e667b061a2058d2d4aba643,【D2D8524B18023CCDD6DBEEF2AB467
  4. jwt 私钥_三分钟带你了解JWT认证
  5. javascript 控制语句
  6. python 类属性方法实例属性方法
  7. Python Logging.basicConfig
  8. TensorFlow tf.keras.layers.conv2D
  9. SQL读写CSV文件
  10. java多对多的存储_Swift CoreData,通过多对多关系保存数据