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。
 
参考资料
1.cookie 和session 的区别详解
 
2.老生常谈session,cookie的区别,安全性
 
3.知乎
【文章来源:http://www.cnblogs.com/shibazijiang/archive/2016/06/07/5568656.html!】

session和cookie的简单理解的更多相关文章

  1. 对session和cookie的一些理解

    由于项目需要,最近用session容器比较多,传载的同时加上了自己的一些理解,不足之处还请大家补充和纠正.);                  response.addCookie(c1);   * ...

  2. 对Django框架中Cookie的简单理解

    概念的理解:首先Cookie和Session一样,是django中用于视图保持状态的方案之一.为什么要进行视图保留呢,这是因为浏览器在向服务器发出请求时,服务器不会像人一样,有记忆,服务器像鱼一样,在 ...

  3. HTTP协议中的COOKIE机制简单理解

    1.为什么会有COOKIE这种机制 首先一种场景, 在一个网站上面, 我发起一次请求,那服务器怎么知道我是谁?是谁发起的这次请求呢, HTTP协议是无状态的协议, 浏览器的每一次请求,服务器都当做一次 ...

  4. 《52讲轻松搞定网络爬虫》读书笔记 - Session和Cookie

    为什么要用Session和Cookie? 简单一句话,因为Session和Cookie可以记录用户状态信息 嘶..这到底啥意思呢? 背景一:动态网页的出现 什么是静态网页 含义:一个网页的内容是HTM ...

  5. Java服务端对Cookie的简单操作

    Java服务端对Cookie的简单操作 时间 2016-04-07 10:39:44 极客头条 原文  http://www.cuiyongzhi.com/index.php/post/15.html ...

  6. Session、Cookie简单理解

    Session: session是一种记录客户状态的机制,session是保存在服务器上的,当浏览器访问服务器的时候,服务器把客户端信息以某种形式记录在服务器上,这就是所谓的session,当浏览器再 ...

  7. 理解Session与Cookie

    写在前面的话:Session和Cookie是非常有意思的两个概念,对于两者的管理可以处理的很复杂,但是无论如何,理解Session和Cookie的基本概念和发明初衷,对于问题的解决,大有裨益. === ...

  8. 转!!深入理解 Session 与 Cookie

    摘要 Session 与 Cookie 不管是对 Java Web 的初学者还是熟练使用者来说都是一个令人头疼的问题.在初入职场时恐怕很多程序员在面试的时候都被问到过这个问题.其实这个问题回答起来既简 ...

  9. 深入理解 Session 与 Cookie

    Session 与 Cookie 的作用都是为了保持访问用户与后端服务器的交互状态.它们有各自的优点,也有各自的缺陷,然而具有讽刺意味的是它们的优点和它们的使用场景又是矛盾的.例如,使用 Cookie ...

随机推荐

  1. C#中一种可调用的异常处理方法

    之前做异常处理时,感觉很麻烦,每个地方都要写try和catch,在博客园上看到一篇文章http://www.cnblogs.com/artech/archive/2012/10/28/automati ...

  2. poj1157LITTLE SHOP OF FLOWERS

    Description You want to arrange the window of your flower shop in a most pleasant way. You have F bu ...

  3. iOS开发中多线程间关于锁的使用

    为什么需要使用锁,当然熟悉多线程的你,自然不会感到陌生. 那你在代码中是否很好的使用了锁的机制呢?你又知道几种实现锁的方法呢? main.m 1 int main(int argc, const ch ...

  4. 详解收发不畅原因及U-Mail邮件中继解决之道

    邮件在商务往来中扮演着信息交流的重要角色,假如传输受阻,必将造成沟通不畅:可能三五封邮件的投递你意识不到其重要性,但假如长期需和客户保持沟 通,则需要保证其一贯的稳定性,这就很考验相关软件平台的性能是 ...

  5. cf 733f

    给你很多条边,每条边有一个初始边权w1,然后还有一个值表示把这个边权减一的代价w2,然后给你一个预算budget,然后让你输出怎么选边之后构成的树的边权和最小(在用budget减少了边权之后),输出你 ...

  6. Host 'XXX' is not allowed to connect to this MySQL server 解决方案/如何开启MySQL的远程帐号

    www.cnblogs.com/zhangzhu/archive/2013/08/22/3274831.html 如何开启MySQL的远程帐号-1)首先以 root 帐户登陆 MySQL 在 Wind ...

  7. db2 重启

    DB2重启数据库实例时,有时停止实例会失败,此时需要先确认没有应用链接数据库,然后再关闭数据库实例,并重新启动. 1.查看是否有活动的链接 命令:db2 list applications for d ...

  8. JS入门之ActiveXObject对象(转载)

    JS入门之ActiveXObject对象   此对象提供自动化对象的接口.   function ActiveXObject(ProgID : String [, location : String] ...

  9. oracle生成单据号

    --创建单据号存放表 CREATE TABLE BU_TAB( DOC_NUM NUMBER --生成的单据号 ); --单据号 create table cux_doc_num( tab ), -- ...

  10. 【总结】清除webbrowser cookie/session的6种方法

    下面是我测试下来的6种清除webbrowser中cookie的6种方法: //方法一:调用 wininet.dll清除cookie (推荐) SuppressWininetBehavior(); // ...