转自:http://blog.csdn.net/wangyangzhizhou/article/details/44277843

http协议的无状态性导致在需要会话的场景下寸步难行,例如一个网站为了方便用户,在一段时间内登录过该网站的浏览器客户端实现自动登录,为实现这种客户端与服务器之间的会话机制需要额外的一些标识,http头部引入的Cookies正是客户端与服务器会话机制的基础。当一个浏览器通过http协议访问某服务器时,服务器可以将指定的一些键值对发往客户端,客户端根据域名保存于本地,下次访问此域名时浏览器会连同此些键值对带到服务器端,这样就实现了服务器与客户端之间的会话机制。

①   客户端第一次访问的报文(无cookies):

GET /web/index.jsp HTTP/1.1

Accept-Language:zh-CN

User-Agent:Mozilla/5.0(Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/31.0.1650.63Safari/537.36

HOST:localhost:8080

Connection:Keepp-Alive

②   服务器响应报文:

HTTP/1.1 200 OK

Content-Length: 3000

Content-Type:text/html;charset=utf-8

Set-Cookie:user=lilei;weight=70kg

Connection: Keep-Alive

③   客户端第二次访问(带cookies):

GET /web/index.jsp HTTP/1.1

Accept-Language:zh-CN

User-Agent:Mozilla/5.0(Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/31.0.1650.63Safari/537.36

HOST:localhost:8080

Connection:Keepp-Alive

Cookie:user=lilei;weight=70kg

第一次访问localhost:8080/web/index.jsp时浏览器搜索本地无相关cookies,服务器接收报文后做出响应,通过http协议的Set-Cookies头部把user=lilei;weight=70kg返回浏览器,浏览器把cookies信息保存到本地,第二次访问时浏览器搜到有相关的cookies并发往服务器,服务器收到信息知道此浏览器之前是lilei用户使用,并且他的体重是70kg,服务器可根据用户信息做一些个性化处理,这就是cookies。

Cookies将信息储存在客户端,每次通信都要将这些信息附带在报文里面,这会导致带宽浪费、敏感数据安全、对复杂结构数据力不从心等等问题,每次访问都把cookies发送到服务器,当cookies较大时明显有带宽浪费问题,假如将用户名密码放到客户端显然存在安全问题,cookies对于非键值对结构的数据肯定力不从心。针对这些问题提出一种解决方案——服务器会话Session,将数据存在服务器无需客户端携带,数据安全更加可控且数据结构可以任意复杂。当然,这种Session的实现也要依靠cookies,服务器把一个唯一值JSESSIONID发往客户端,每个唯一值表示一个客户端,客户端与服务器通信时携带此唯一值,服务器根据唯一值寻找属于此客户端的所有数据。服务器会话并非本章节要讨论的重点,将在后面相关章节再深入探讨实现原理。

重新回到cookies,浏览器将cookies发往tomcat服务器后,tomcat需要将这些信息封装成对象,如下图,Cookies对象包含了若干个ServerCookie,而每个ServerCookie主要包含了name和value,即键值对。当然还包括其他参数,例如maxAge表示cookie过期时间,path表示cookie存放子路径,domain表示服务器主机名。另外还有其他参数,读者可自行查阅http协议的cookie标准,有个参数需要特别说明下,secure参数表示是否使用SSL安全协议发送cookies,避免明文被网络拦截。这些变量保存在Tomcat中的类型都为MessageBytes,即以字节数组形式存储在内存中,好处就是避免多余的转码操作影响性能。

小文本——Cookies相关推荐

  1. html图片如何和输入框并排,闪亮的4个小文本输入框并排

    释义(并简化为2个输入的情况),您的问题是: runApp(list( ui = bootstrapPage( textInput(inputId="xlimitsmin", la ...

  2. JavaEE 要懂的小事:二、图解 Cookie(小甜饼)

    Writer      :BYSocket(泥沙砖瓦浆木匠) 微         博:BYSocket 豆         瓣:BYSocket FaceBook:BYSocket Twitter   ...

  3. linux中将文本中的单词换掉的指令_为什么说从PDF中提取文本是一件困难的事?...

    PDF文档处理工作中,总是绕不开对文本提取的需求.很多用户觉得我们PDFlux好用,所以对其中的底层技术也非常感兴趣.也有人为认为,从PDF里抽取文本段落和表格,应该非常简单! 近期,我们会对PDF文 ...

  4. android 文本左对齐,在Android中与文本左可绘制对齐

    我是自定义视图的新手,对android中的画布了解不多, 我想将左可绘制对象与该图像相同的textview的文本(无论是否为多行)与布局的右侧对齐(如该图像所示) 在上面的图像中,我想将$图像与文本对 ...

  5. 根据大小分割大文本_场景文本检测—CTPN算法介绍

    SIGAI特约作者:沪东三哥 原创声明:本文为SIGAI 原创文章,仅供个人学习使用,未经允许,不得转载,不能用于商业目的. 其它机器学习.深度学习算法的全面系统讲解可以阅读<机器学习-原理.算 ...

  6. 【OCR技术系列之五】自然场景文本检测技术综述(CTPN, SegLink, EAST)

    文字识别分为两个具体步骤:文字的检测和文字的识别,两者缺一不可,尤其是文字检测,是识别的前提条件,若文字都找不到,那何谈文字识别.今天我们首先来谈一下当今流行的文字检测技术有哪些. 文本检测不是一件简 ...

  7. 端到端文本检测与识别——FOTS

    版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/u013063099/article/details/89236368 常见的深度学习OCR过程中,会 ...

  8. 文字识别(五)--自然场景文本检测技术综述(CTPN, SegLink, EAST)

    转自:https://www.cnblogs.com/skyfsm/p/9776611.html 文字识别分为两个具体步骤:文字的检测和文字的识别,两者缺一不可,尤其是文字检测,是识别的前提条件,若文 ...

  9. 文本检测 论文阅读笔记之 Pixel-Anchor: A Fast Oriented Scene Text Detector with Combined Networks

    Pixel-Anchor: A Fast Oriented Scene Text Detector with Combined Networks 摘要:最近语义分割和通用对象检测框架已被场景广泛采用文 ...

最新文章

  1. Opengl-光照章节学习成果
  2. boost::mp11::mp_set_intersection相关用法的测试程序
  3. Java更改中文_Java中文编程开发,让Java编写更改复杂
  4. line-height与图片底部间隙的学习整理转述
  5. jquery练习——简单的图片结果展示效果
  6. 【Vue起步-Windows】N01:环境安装
  7. vue分页组件重置到首页问题
  8. 怎么把英文字幕翻译成中文?快把这些方法收好
  9. Android 小米推送服务集成
  10. 玩转b站:实用的b站工具合集
  11. 当代计算机科学的先驱John Todd逝世
  12. linux下pdb文件除水,blast+本地化中blastp操作(基于PDB库)—linux
  13. 2 什么是计算机网络设置密码,怎么设置电脑网络密码
  14. config配置中文解释
  15. 【转】跨终端实践-天猫试戴的解决方案
  16. CIS基准测试工具kube-bench使用
  17. 深入理解MyBatis(七)—MyBatis事务
  18. Android 解决 adapter.notifyDataSetChanged() 不起作用
  19. 【字符识别】模板匹配(区域生长法)字母+数字识别【含Matlab源码 1214期】
  20. 媒体揭露互联网“账号黑市”:百倍暴利

热门文章

  1. 通过jsp向mysql批量导入数据_通过JSP+JavaBean对mysql进行添加数据的操作
  2. skt7850鸿蒙策略,SKT九连跪,牛肉面
  3. IDEA 打包 spark 程序 并在远程 hadoop HA 上运行测试
  4. android 常用加密,分享一下Android各种类型的加密
  5. CSP初赛篇·知识大纲(未完成)
  6. php phantomj,射手网复活攻略:用百度快照和phantomjs让射手网起死回生
  7. c语言大小箱子,基于C语言箱子游戏.doc
  8. 20220906美的集团笔试
  9. C语言:链表实现二进制数加1运算
  10. k8s上部署Harbor通过Nginx-Ingress域名访问