揭秘Cookie:

cookie说的直白点就是保存在用户浏览器端的一个键值对,举个例子,你现在登录了京东商城,你把浏览器关闭之后,你再打开京东,你还是可以对你的账户继续操作,已经购买的商品,订单都是可以看到的,这个就是cookie起了作用。那为什么你再次打开的时候,就直接是已经登录状态了,京东的服务端是怎么知道你已经登录的哪,其实就是cookie起了作用,就是你在登录的时候京东对你的浏览器设置了cookie,你登录的时候它把你的账号密码写到了你浏览器的cookie里面,你下次打开京东的时候,它就默认把你浏览器里面的cookie,也就是你的账号密码发送到了京东的服务端,这样的话,京东就知道你已经登录,所以你再打开jd的时候就是已经登录的状态了,很多网站上面的记住我、30天不需要登录就是用的cookie,前面也说了cookie是存在本地的,如果你清理了浏览器的cookie,那么cookie就没有了,你就是未登录的状态了。

为什么要用Cookie?

在HTTP请求中,每个HTTP请求都是独立,没有办法做上下文关联,但是在真正的应用中,很多场景是需要用到这种关联的。最经典也是最常见到使用Cookie的就是登录操作,登录成功后,我们可以在同一浏览器下的不同Tab页面都能访问我们需要登录才可以看到的页面。这就是通过Cookie来实现的。否则每开一个Tab页面登录一次淘宝,估计你也就不想购物了。

所谓的Cookie到底是什么?

从本质上来说,Cookie我们可以理解为,它就是一个存在硬盘的字符串,Cookie可以做很多操作,以登录为例的话,它实际就是存在硬盘中的账号密码,多数会以一种加密的方式存储。

不同浏览器时Cookie是共用的么?

假设电脑上有三种浏览器,谷歌、欧朋、火狐,如果谷歌上打开淘宝并且登录,那么火狐浏览器打开淘宝时一定还是需要登录,其实认真想下就能够想通了,Cookie是存在硬盘中的一个字符串,那么谷歌和火狐浏览器分别安装在不同的目录下,它们存储Cookie的地址一定是不同,所以不同浏览器之间是不可以共用Cookie的。

揭秘Session:

上面说了cookie,提到cookie肯定不能少了session,什么是session呢,说直白点,就是保存在服务端的一个键值对。举个例子,还是京东,登录的时候已经把账号密码写到cookie里面了,咱们再去打开京东页面的时候,浏览器会自动把京东这个网站下面的cookie发给京东的服务端,也就是cookie里面存的东西,账号密码发到京东的服务端了,那发过去了,京东的服务端肯定是要验证一下,你发的账号密码对不对,要不然你知道谁的账号了,你随便伪造一个cookie发给京东那就直接能操作别人的账号了,那就不安全了。那怎么办呢,服务端就也保存一个键值对不就行了,那你把cookie发过来的时候,和我这保存的这个键值对一样不就ok了,这个就是session,其实就是保存在服务端的一个键值对。

有的人可能会问了,那你的账号密码肯定都是存在数据库里面的,完全不用session啊,cookie发过来的时候,我直接从数据库里面查到这个用户的账号密码做比较就好了,这样当然是可以的,但是我想说你太年轻了,你想如果打开一个网站,里面很多页面都是要验证一下你的登录状态的,那你每次验证登录状态都要去操作数据库,我们都知道计算机在处理数据的时候,都是先从硬盘上取数据然后放到内存里面,内存再给cpu,cpu来进行处理(看下面的图),CPU的处理速度是很快的,就像火箭一样,内存的存取的速度就像高铁的速度一样,而硬盘的读取速度就像普通的汽车一样,而数据库里面的数据都是存在硬盘上的,每次去校验一下账号密码从数据库里面取数据,那效率就很低了。一般session都是存在缓存里面,因为要经常用到,要提升性能,直接把seesion放到内存里面,这样子的话,查的时候直接在内存里面取数据了,就很快了,像一些缓存数据库,redis、memcached这些都是把数据直接存到内存里面的。

为什么要用Session?

在知道Cookie是存在硬盘中的字符串后,如果将存在硬盘中的Cookie盗取,存在登录信息被破解的风险,所以通过Session来避免信息被盗取的风险。

什么是Session?

可以将Session简单的理解为一个对象,这个对象中可以包含很多东西,具体想包含什么是可以由开发人员自定义的。存在服务器中的是一个key,value形式的对象。

Cookie与Session有什么联系?

在WEB应用中,Cookie是可以独立使用的,但是Session必须依赖于Cookie使用,每创建一个Session对象时,都会生成一个唯一的Session_id,它通过Cookie的形式存在浏览器的内存中,随着浏览器关闭则消失,从而保证不留存在硬盘中。

Session的原理是什么?

登录成功后,通过Cookie的形式在浏览器内存中存入一个唯一的Session_id,每一次请求时,都会携带带有Session_id的Cookie信息传到服务器,以Session_id为Key得到唯一的Value信息,则代表发送过来的请求为有效请求。否则为无效请求。

浅谈cookie、session的更多相关文章

  1. 浅谈cookie 和session 的区别

    具体来说 cookie 是保存在“客户端”的,而session是保存在“服务端”的 cookie 是通过扩展http协议实现的 cookie 主要包括 :名字,值,过期时间,路径和域: 如果cooki ...

  2. 浅谈cookie 和 session

    一. cookie 定义:保存在浏览器本地上的一组组键值对 特点: 由服务器让浏览器进行设置的 浏览器保存在浏览器本地 下次访问时自动携带 应用: 登录 保存浏览习惯 简单的投票 使用cookie的原 ...

  3. (进阶篇)浅谈COOKIE和SESSION关系和区别

    COOKIE介绍 cookie 常用于识别用户.cookie 是服务器留在用户计算机中的小文件.每当相同的计算机通过浏览器请求页面时,它同时会发送 cookie.通过 PHP,您能够创建并取回 coo ...

  4. 浅谈 cookie 和 session

    1.关闭浏览器后,session是否还存在? session在服务器和客户端各保留一个副本,关闭浏览器与否和session是否存在没有任何关系. session采取的是服务器端保持状态的方案,它存储在 ...

  5. 浅谈cookie和session

    Cookie简介 Cookie(复数形态Cookies),中文名称为“小型文本文件”,指某些网站为了辨别用户身份或存储用户相关信息而存储在用户本地终端(Client Side) 上的数据(通常为加密数 ...

  6. 浅谈Cookie与Session技术

      一.什么是状态管理 将客户端与服务器之间多次交互当做一个整体来看,并且将多次交互所涉及的数据(状态)保存下来. 会话:当用户打开浏览器,访问多个WEB资源,然后关闭浏览器的过程,称之为一个会话,选 ...

  7. 浅谈cookie与session的区别

    cookie用的是在客户端保持状态的方案(它是在用户端的会话状态的存贮机制),前端也可以来设置他 所有浏览器都识别,并且会缓存在浏览器中. cookie是以key=value这种键值对的形式保存,每个 ...

  8. 浅谈Cookie、Session与Cache的区别

    以前实现数据的缓存有多种方法,如客户端的Cookie,服务器端的Session.Application. 一.Cookie Cookie是保存客户端的一组数据,主要用来保存用户的个人信息,主要存放浏览 ...

  9. 浅谈cookie测试

    Cookie 提供了一种在Web 应用程序中存储用户特定信息的方法,例如存储用户的上次 访问时间等信息.假如不进行cookie存储一个网站的用户行为,那么可能会造成以下问题:用户进行购买几件商品转到结 ...

随机推荐

  1. size_t和unsigned int区别

    size_t和unsigned int有所不同,size_t的取值range是目标平台下最大可能的数组尺寸,一些平台下size_t的范围小于int的正数范围,又或者大于unsigned int.最典型 ...

  2. oracle 之 伪列 rownum 和 rowid的用法与区别

    rownum的用法 select  rownum,empno,ename,job from emp where rownum<6 可以得到小于6的值数据 select rownum,empno, ...

  3. 未能加载文件或程序集“System.Web.WebPages.Razor, Version=2.0.0.0, Culture=neutral, PublicKe

    https://bbs.csdn.net/topics/392046946 电脑没安装mvc4,应该是,解决这个问题一上午了今天,然后装完了后就好了! https://www.microsoft.co ...

  4. 论文笔记:Diffusion-Convolutional Neural Networks (传播-卷积神经网络)

    Diffusion-Convolutional Neural Networks (传播-卷积神经网络)2018-04-09 21:59:02 1. Abstract: 我们提出传播-卷积神经网络(DC ...

  5. Python实现机器学习算法:AdaBoost算法

    Python程序 ''' 数据集:Mnist 训练集数量:60000(实际使用:10000) 测试集数量:10000(实际使用:1000) 层数:40 ------------------------ ...

  6. Latex 三线表及设置列数

    参考: latex的三线表格及一些错误的修改 latex 三线表 Latex 三线表 及设置列数 绘制三线表: \begin{table}[htbp] \caption{\label{tab:test ...

  7. 订单BOM、销售BOM、标准BOM

    订单BOM.销售BOM.标准BOM   訂單BOM: 是實際生產時用的BOM, 在標準BOM和銷售BOM基礎上增減物料的BOM銷售BOM: 是為特定客戶設定的BOM, 在主檔數據層次上的BOM, 在生 ...

  8. mutect/mutsig/gistic官网汇总

    http://software.broadinstitute.org/software/cprg/

  9. hdu 6169 Senior PanⅡ Miller_Rabin素数测试+容斥

    Senior PanⅡ Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 524288/524288 K (Java/Others) Pr ...

  10. 不要在Lua中使用os.clock()函数

    1.os.clock函数的实现是调用了c语言的函数函数库,实现代码如下: static int os_clock (lua_State *L) { lua_pushnumber(L, ((lua_Nu ...