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. WinForm添加快捷键

    1.    WinForm下给窗体和按钮添加快捷键 设置Enter键要执行的动作:设置FORM的 AcceptButton属性为指定的button按钮. 设置ESC键要执行的动作:设置FORM的Cac ...

  2. json文本装换为JSONArray

    package com.beijxing.TestMain; import java.io.File; import java.io.IOException; import org.apache.co ...

  3. 介绍开源的.net通信框架NetworkComms框架之三 传递List

    原文网址: http://www.cnblogs.com/csdev Networkcomms 是一款C# 语言编写的TCP/UDP通信框架  作者是英国人  以前是收费的 目前作者已经开源  开源地 ...

  4. 在GMIC听“移动互联网+医疗”的感受 2015-04-29

    “互联网+”这个词挺火的,基本格式是“互联网+传统行业”,比如医疗.教育.交通等等.就更别说电子商务.金融这些领域了,相比已经和互联网分不 开了.在我看来,互联网+的背后,是信息化.智能化.信息沟通的 ...

  5. 使用date类和format类对系统当前时间进行格式化显示

    一:Date------------String 代码1:(代码二对显示出来的时间格式进行优化) package DateDemo; import java.text.SimpleDateFormat ...

  6. 阿里云 ECS 逻辑卷挂载数据盘

    查看磁盘信息: [root@ixx~]# fdisk -l Disk /dev/xvda: 21.5 GB, 21474836480 bytes 255 heads, 63 sectors/track ...

  7. java_method_stringUtils

    /** * 字符串英文单双引号处理,将中英文引号转为中文的引号 * @param temp * @return */ public static String getStringDatabase(St ...

  8. ASP.NET5 Beta8可用性

    ASP.NET5 beta8现已上都的NuGet作为一个工具升级到Visual Studio2015!此版本极大地扩展.NET核心对OS X和Linux所支持的范围.您现在可以使用网络,加密和全球化特 ...

  9. 'autocomplete="off"'在Chrome 中不起作用

    大家都知道autocomplete属性是表单字段中的HTML5新属性,该属性有两种状态值,分别为"on" 和 "off",该属性可省略:省略属性值后默认值为&q ...

  10. java web(spring mvc) 获取请求host 和 如何获取静态页的相对路径

    1.获取请求host StringBuffer url = request.getRequestURL(); String tempContextUrl = url.delete(url.length ...