百度了一波session与Cookie,我发现这东西远比我想象中更复杂(可能是因为我不明白底层的运行原理)。网上也是一堆的关于Session与Cookie区别/联系的文章,然而,我看完了还是一脸懵逼的状态,所以自己动手写写对http之session&cookie的简单了解。走过路过的各位dalao,欢迎拍砖斧正……

  前置条件:只有验证通过之后才能访问网站(可以理解为只有登录之后才能正常使用网站)

  因为http协议是无状态的,所以服务器是不可能知道在上一次http请求中,我通过了验证。这种情况如何解决呢?

  可以做成每个网页都有用户名和密码的验证(不过,我想也没几个人愿意访问一个网页就输一次用户名密码),这种方法也会对服务器造成很大负担(因为每个Request都需要到数据库中去验证)。

  其次,可以选择在服务器端或客户端保存一些代表自己身份的信息,每次请求带上一个能代表自己身份的“铭牌”就行了,所有就有了Session与cookie。

  当浏览器向服务器发送一个请求时,如果需要创建Session时(什么时候需要,什么时候不需要,看文章下方斜体<补充>),服务器会为浏览器窗口创建一个独一无二的Session内存(其中包含一个唯一的Session id)。

  首次创建Session的时候,服务端会在http协议中告知客户端,需要在Cookie中记录一个Session id,以后每次发送请求的时候,带上Session id,我就知道你是谁了。

(PS:如果客户端禁用Cookie,咋整?一般这种情况下,可以通过使用URL重写,将Session id作为参数传递,来跟踪会话。即每次http交互,URL后面都会附加一个诸如sid=xxx这样的参数,使得服务端可以根据它来跟踪用户。)

Cookie:是浏览器保存信息的一种方式,可以理解为一个文件,保存在客户端。服务器可以通过响应浏览器的set-cookie标头,设置Cookie的信息。只允许创建txt的文本文件(客户端可以阻止服务端写入,还可以删除)

-------------------------------------------------

Cookie是有时间限制的,根据生命期不同分成两种:

会话Cookie:生命期为浏览会话期的Cookie。如果不设置过期时间,则表示这个Cookie生命周期为从创建到浏览器关闭止,只要关闭浏览器窗口,Cookie就消失了。会话Cookie一般不保存在硬盘上而是保存在内存里。

持久Cookie:如果设置了过期时间(setMaxAge(606024)),浏览器就会把cookie保存到硬盘上,关闭后再次打开浏览器,这些Cookie依然有效直到超过设定的过期时间。存储在硬盘上的Cookie可以在不同的浏览器进程间共享,比如两个IE窗口。而对于保存在内存的Cookie,不同的浏览器有不同的处理方式。

                                        ----------------------------------

Session:百度一波翻译,会话的意思。原本所表达的含义是指有始有终的一系列动作/消息。当它与网络协议相关联的时候,通常表示“面向连接”(指的是通信双方在通信之前要创建一个通信的渠道)或“保持状态”(指通信的一方能够把一系列的消息关联起来,使得消息之间能够互相依赖,例一个服务员能够认出再次光临的顾客且记得上次这个顾客还欠店里一份饭钱)两个含义,我这里说的Session,是服务器端的一种机制,使用类似于散列表的结构来保存信息。Session通过Cookie,在客户端保存Session id,而将用户的其他会话消息保存在服务端的Session对象中。与此相对的,Cookie需要将所有信息都保存在客户端。因此Cookie存在着一定的安全隐患,例如本地Cookie中保存的用户名密码被破译,或cookie被其他网站收集。

  补充为某个客户端的请求创建一个Session的时候,服务器会首先检查这个客户端的请求里是否包含了一个Session标识(即Session id)。如果已经包含一个Session id则说明以前已经为此客户创建过Session,服务器就按Session id把这个Session检索出来使用(如果检索不到,可能会新建一个,这种情况可能出现在服务端已经删除了该用户对应的Session对象,但用户人为地在请求的URL后面附加上一个Jsession的参数)。如果客户端请求中不包含Session id,则为此客户端创建一个Session并且同时生成一个与之相关联的Session id,这个Session id将在本次响应中返回给客户端保存。

  其实还有很多要写的、但是发现自己越写越混乱(⊙﹏⊙)、暂时就这样吧,由于代码能力有限,无奈之下只能用纯文字说明了。写在这,权当自己做笔记了.....

PS:之前自己折腾了一下LoadRunner的脚本关联,发现登录需要关联的参数一般是Session id,就对Session产生了点兴趣。至于Cookie,想必每个测试工程师都应该听过自家的开发对自己说过这句话:“你把缓存清了在试试....”,哈哈哈~~

  这是我第一篇笔记,开始自己的学习之路吧。吼吼~~~

____努力可能比较累,但是心安....

转载于:https://www.cnblogs.com/zichuan/p/6096631.html

http之SessionCookie相关推荐

  1. 一篇故事看懂从 session-cookie 到 JWT 的技术演变

    作者 | 轩辕之风O 来源 | 编程技术宇宙(ID:xuanyuancoding) 我是一个web服务器 我是一个web服务器,我的工作是给人类提供上网服务,我每天要为数以万计的人提供网页浏览服务. ...

  2. session-cookie 和token登录验证

    最近研究了下基于token的身份验证,并将这种机制整合在个人项目中.现在很多网站的认证方式都从传统的seesion+cookie转向token校验.对比传统的校验方式,token确实有更好的扩展性与安 ...

  3. javaweb_会话管理(sessionCookie)

    一.会话管理 1.会话概述:     双方的交流或交互,计算机中也是,浏览器和服务器的交互称之为会话.     一次会话中包含多次请求和响应 2.会话功能:     在一次会话的范围内的多次请求间,共 ...

  4. sessioncookie

    会话的作用:共享数据 cookie:客户端会话技术,存储数据在客户端 coolie.setMaxAge:设置会话关闭时间(0:删除,负数:默认)(单位,秒) 浏览器对每个cookie限制大小4kb,每 ...

  5. 【转载】Session服务器配置指南与使用经验

    作者:张子秋 出处:http://www.cnblogs.com/zhangziqiu/ 原文链接:http://www.cnblogs.com/zhangziqiu/archive/2009/03/ ...

  6. 还分不清 Cookie、Session、Token、JWT?

    点击上方蓝色"方志朋",选择"设为星标" 回复"666"获取独家整理的学习资料! 转自:掘金   作者:秋天不落叶 juejin.im/po ...

  7. 深夜,我偷听到程序员要对session下手……

    我是一个web服务器 我是一个web服务器,我的工作是给人类提供上网服务,我每天要为数以万计的人提供网页浏览服务. 已经是深夜了,我还在和手下几个兄弟为了一件事紧张讨论着. "老大,现在咱们 ...

  8. 干掉服务状态!从 Session 到 Token,复杂度降低100倍!

    作者 l 会点代码的大叔(CodeDaShu) 在讲Token之前,先简单说说什么是 Session 和 Cookie. 首先要知道 HTTP 请求是无状态的: 无状态的意思就是:每一次请求都是独立的 ...

  9. 极客学院职业路径图课程视频下载-爬虫

    一.序言 最近看了极客学院的视频教程,相当不错,渴望把视频下载到本地.手动下载耗时耗力,因而决定研究一番,写一程序自动下载,终于小有成果!有图为证: 二.技术难点 既然要实现自动下载,免不了要爬取极客 ...

最新文章

  1. 初级c 语言题库,c 语言题库.doc
  2. 用shell脚本实现定时备份数据库
  3. 七招从办公室政治中取胜 发表于 09 May 2008 ? 领导力培养
  4. 移动应用发展远超Web 谷歌苹果将主导世界?联网的发展才刚刚开始
  5. cat命令读取一部分_脚本攻略2 --命令之花
  6. java 单例设计_Java 之单例设计模式
  7. docker删除本地已下载的镜像
  8. 成都亿佰特物联网无线数传专家:lora无线传输模块网关技术的优缺点
  9. 物联网建设中通讯互联层的终极解决方案
  10. 压测中提高并发数后服务端处理时间增长的原因分析
  11. MySQL 的CASE WHEN 语句使用说明
  12. 秒杀场景下MySQL的低效原因和改进
  13. 线程锁并不是想象的那样可靠
  14. 接口测试-解析har文件
  15. 数据库:关于BULK INSERT 学习笔记(1)
  16. 金融发展在经济结构调整中的重要作用
  17. PXE配置-Tftpd64
  18. Quartus下软硬核固化到EPCS中(JTAG)延续上篇
  19. 深度置信(信念)网络DBN(Deep Belief Network)
  20. Android studio如何导入导出手机和模拟器文件

热门文章

  1. 朝花夕拾-4-shell
  2. 让自己的代码生成对应的chm帮助文档
  3. undefined reference to `jpeg_std_error(jpeg_error_mgr*)
  4. ASP.NET MVC涉及到的5个同步与异步,你是否傻傻分不清楚?[上篇]
  5. 让模型实现“终生学习”,佐治亚理工学院提出Data-Free的增量学习
  6. CVPR2019| 最新CVPR2019论文抢先看!
  7. 自注意力机制不一定是灵丹妙药???基于MLP的sMLPNet!MSRA出品
  8. 计算机视觉论文-2021-06-22
  9. 收藏 | 神经网络debug 6大技巧!
  10. CVPR 2021 | 姿态可控的语音驱动