通过cookie和session让http协议变得有状态
来源:互联网 发布:数据挖掘公司排名 编辑:程序博客网 时间:2024/05/20 02:51
session和cookie的理解以及如何http有状态
因为http协议是无状态的,也就是说每次连接之后就不会记住上一次连接,如果是要登录才能查看的信息,就对用户体验很不好了。这篇文章我们介绍在客户端和服务端如何使得http协议有状态。
Cookie
cookie的工作机制是用户识别及状态管理
。web网站为了管理用户的状态会通过WEB浏览器,把一些数据临时写入用户的计算机内,接着用户访问该web网站的时候,可通过通信方式取回之前存的cookie。
为cookie服务的首部字段
set-Cookie
例子:
Set-Cookie: name=helios; expires=Sun, 17-Jan-2038 19:14:07 GMT; path=/; domain=.example.com
当服务器准备开始管理客户端状态的时候,会事先告知各种信息。
下面列举了set-Cookie
的字段值:
如果cookie不设置生命周期就默认为这次会话结束,会暂时将cookie存在内存中。
cookie
我们在浏览器的控制台下console里面输入document.cookie
就能看到浏览器上保存的所有cookie了。
就是一些键值对
cookie是怎么发送到服务器的呢
根据RFC的标准规定cookie是不能进行跨域的,如果能跨域的话也就会造成大麻烦了。
根据上面的介绍,我们知道cookie中包含两个字段domain
和path
,比如说一个URL为www.example.com/foo/bar.html
;在这个里面domain是www.example.com
,path为:foo/bar.html
,domain和path就指定了cookie的作用范围。当要向一个服务器发送请求的时候,在客户端会查找cookie的范围会大于这个要发送的URL的cookie的作用域。
比如要请求www.example.com/foo/bar.html
这个资源,cookie中的domin为www.example.com
,path为/
或者/foo
或者/foo/bar.html
的cookie就会发送给服务器。当然是在cookie没有过期的情况下。
cookie的原理总结
先看一张极丑无比的图:
1. 没有cookie状态下的请求响应
2. 记录状态之后
- 客户端向服务器发送请求,服务器记录状态(生成cookie)
- 服务器在响应报文中通过
set-Cookie
字段,在浏览器端生成cookie - 当客户端继续发送请求的时候,带有该域名下的cookie发送过去
- 服务端发现客户端发送过来的请求的时候,回去检查是哪个客户端发送过来的请求,然后对比服务器上的记录,得到之前的那个信息
session
session的机制
当程序要为某个客户端的请求生成一个session的时候,服务器会先检查请求中是否存在session的标识(一般为sessionid),如果包含sessionid
如果包含sessionid服务器就会检索出和这个session相关的信息,如果请求中不含有sessionid
那么客户端就会为该请求,创建一个session并会通过严谨的算法创建一个sessionid
(Tomcat 中sessionid=随机数+当前时间+jvmid)。
session是的怎么发送给服务器的呢
通常情况下是通过cookie,但是如果客户端禁用了cookie的话,还可以通过添加隐藏域或者把sessionid
作为URL的参数传递给服务器。
session和cookie是http变为有状态的
通过下面一张其丑无比的图来展示一下:
- 通过cookie和session让http协议变得有状态
- HTTP无状态协议和cookie、session原理
- session HTTP协议与状态保持 cookie
- HTTP协议是无状态协议,Session,Cookie的解释
- HTTP协议是无状态协议,怎么理解? session cookie
- HTTP协议里的cookie和session
- http协议学习系列(Cookie和Session)
- http协议 cookie和session机制详解
- http协议学习-Cookie和Session
- HTTP 协议 Session Cookie
- Http session和cookie有什么区别
- http(动词、状态码)以及为什么会有session和cookie
- http协议的无状态特征、session、cookie
- HTTP协议与状态链接解决方案cookie,session的关系
- HTTP协议基础(渗透基础:状态码,cookie,session)
- PHP 精选之COOKIE-SESSION应用(HTTP协议状态码)
- HTTP协议与状态链接解决方案cookie,session的关系
- HTTP无状态协议和session原理
- 【分享】在ubuntu server上轻松搭建ss服务端
- LeetCode练习_20170521_找最大回文串
- 腾讯社交广告高校算法大赛——心得
- 从最简单的add函数调用过程分析函数栈桢创建和销毁的过程
- CentOS虚拟机上安装MySQL 5.6
- 通过cookie和session让http协议变得有状态
- 借用实例化和prototype实现继承
- 第二弹、window下配置redis的一主二从三哨兵模式
- 第十三天:关于异常的一个小总结
- Servlet简要笔记
- 数组合并
- 02-JDBC连接MySQL数据库【查询数据】
- 借助构造函数实现继承(解决引用类型问题)
- 实现微信客服功能