Cookie和Session


区别

  1. cookie保存在客户端,session保存在服务器端,
  2. cookie目的可以跟踪会话,也可以保存用户喜好或者保存用户名密码
  3. session用来跟踪会话

1. 必备知识:

1.1 http 原理

HTTP是一个无状态的协议无状态是指客户机(Web浏览器)和服务器之间不需要建立持久的连接,这意味着当一个客户端向服务器端发出请求,然后服务器返回响应(response),连接就被关闭了,在服务器端不保留连接的有关信息。

1.2 传输流程

  1. 地址解析
    • 如用客户端浏览器请求这个页面: http://localhost:8080/index.html 从中分解出协议名、主机名、端口、对象路径等部分,对于我们的这个地址,解析得到的结果如下:
    • 协议名:http
    • 主机名: localhost
    • 端口:8080
    • 对象路径: index.html
    • 在这一步,需要域名系统DNS解析域名localhost.com,得主机的IP地址。
  2. 封装HTIP请求数据包
    • 把以上部分结合本机自己的信息,封装成一个HTTP请求数据包
  3. 封装成TCP包并建立连接
    • 封装成TCP包,建立TCP连接(TCP的三次握手)4客户机发送请求命
  4. 客户机发送请求命令
    • 建立连接后,客户机发送一个请求给服务器,请求方式的格式为:统一资源标识符(URL)、协议版本号,后边是MIME信息包括请求修饰符、客户机信息和可内容。
  5. 服务器响应
    • 服务器接到请求后,给予相应的响应信息,其格式为一个状态行,包括信息的协议版本号、一个成功或错误的代码,后边是MME信息包括服务器信息、实体信息和可能的内容。
  6. 服务器关闭TCP连接
    • 服务器关闭TCP连接:一般情况下,一旦Web服务器向浏览器返回了请求数据,它就要关闭TCP连接,
    • 如果浏览器或者服务器在其头信息加入了这行代码Connectionkeep-alve,TCP连接在发送后将仍然保持打开状态,
    • 于是,浏览器可以继续通过相同的连接发送请求。保持连接节省了为每个请求建立所连接所需的时间,还节约了网络带宽。

http请求报文

在这里插入图片描述

2. Cookie

  1. 当我们登录网站勾选保存用户名和密码的时候,一般保存的都是cookie,将用户名和密码的cookie保存到硬盘中,这样再次登录的时候浏览器直接将cookie发送到服务端验证。
  2. 再比如用户喜欢的网页背景色,比如QQ空间的背景,这些信息也是可以通过cookie保存到客户端的,这样登录之后直接浏览器直接就可以拿到相应的偏好设置。
  3. 跟踪会话,比如某些网站中网页有不同的访问权限,有只能登录的用户访问的网页或者用户级别不同不能访问的,但是http请求是无状态的,每次访问服务端是不知道是否是登录用户,很自然的想到在http请求报文中加入登录标识就可以了,这个登录标识就可以是cookie,这样的cookie服务端要保存有所有登录用户的cookie,这样请求报文来了之后拿到登录标识cookie,在服务端进行比较就可以了。

在这里插入图片描述

3. Session

  1. session就是用来保存会话的cookie
  2. http是无状态的协议,客户每次读取web页面时,服务器都打开新的会话,而且服务器也不会自动维护客户的上下文信息,那么要怎么才能实现网上商店中的购物车呢,session就是一种保存上下文信息的机制,它是针对每一个用户的,变量的值保存在服务器端,通过SessionID来区分不同的客户。

在这里插入图片描述

浏览器和Session之间的关系内幕
在这里插入图片描述

4. 提问:

如果客户端禁止 cookie能实现session 还能用吗?

  • 答: 可以用,session只是依赖cookie存储sessionid,如果cookie被禁用了,可以使用url 中添加sessionid 的方式保证session 能正常使用。

5. 致谢

文章参考自:

  1. wuxinliulei:cookie和session的区别
  2. 尚硅谷JavaWeb课程
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值