HTTP是不保存状态的协议,如何保存用户状态?

HTTP 是一种不保存状态,即无状态(stateless)协议。也就是说 HTTP 协议自身不对请求和响应之间的通信状态进行保存。那么我们保存用户状态呢?Session 机制的存在就是为了解决这个问题,Session 的主要作用就是通过服务端记录用户的状态。典型的场景是购物车,当你要添加商品到购物车的时候,系统不知道是哪个用户操作的,因为 HTTP 协议是无状态的。服务端给特定的用户创建特定的 Session 之后就可以标识这个用户并且跟踪这个用户了(一般情况下,服务器会在一定时间内保存这个 Session,过了时间限制,就会销毁这个Session)。

在服务端保存 Session 的方法很多,最常用的就是内存和数据库(比如是使用内存数据库redis保存)。既然 Session 存放在服务器端,那么我们如何实现 Session 跟踪呢?大部分情况下,我们都是通过在 Cookie 中附加一个 Session ID 来方式来跟踪。

Cookie 被禁用怎么办?

最常用的就是利用 URL 重写把 Session ID 直接附加在URL路径的后面。

Cookie的作用是什么?和Session有什么区别?

Cookie 和 Session都是用来跟踪浏览器用户身份的会话方式,但是两者的应用场景不太一样。

Cookie 一般用来保存用户信息 比如①我们在 Cookie 中保存已经登录过得用户信息,下次访问网站的时候页面可以自动帮你登录的一些基本信息给填了;②一般的网站都会有保持登录也就是说下次你再访问网站的时候就不需要重新登录了,这是因为用户登录的时候我们可以存放了一个 Token 在 Cookie 中,下次登录的时候只需要根据 Token 值来查找用户即可(为了安全考虑,重新登录一般要将 Token 重写);③登录一次网站后访问网站其他页面不需要重新登录。Session 的主要作用就是通过服务端记录用户的状态。 典型的场景是购物车,当你要添加商品到购物车的时候,系统不知道是哪个用户操作的,因为 HTTP 协议是无状态的。服务端给特定的用户创建特定的 Session 之后就可以标识这个用户并且跟踪这个用户了。

Cookie 数据保存在客户端(浏览器端),Session 数据保存在服务器端。

Cookie 存储在客户端中,而Session存储在服务器上,相对来说 Session 安全性更高。如果要在 Cookie 中存储一些敏感信息,不要直接写入 Cookie 中,最好能将 Cookie 信息加密然后使用到的时候再去服务器端解密。

URI和URL的区别是什么?

  • URI(Uniform Resource Identifier) 是统一资源标志符,可以唯一标识一个资源。
  • URL(Uniform Resource Location) 是统一资源定位符,可以提供该资源的路径。它是一种具体的 URI,即 URL 可以用来标识一个资源,而且还指明了如何 locate 这个资源。

URI的作用像身份证号一样,URL的作用更像家庭住址一样。URL是一种具体的URI,它不仅唯一标识资源,而且还提供了定位该资源的信息。

HTTP 和 HTTPS 的区别?

  1. 端口 :HTTP的URL由“http://”起始且默认使用端口80,而HTTPS的URL由“https://”起始且默认使用端口443。

  2. 安全性和资源消耗: HTTP协议运行在TCP之上,所有传输的内容都是明文,客户端和服务器端都无法验证对方的身份。HTTPS是运行在SSL/TLS之上的HTTP协议,SSL/TLS 运行在TCP之上。所有传输的内容都经过加密,加密采用对称加密,但对称加密的密钥用服务器方的证书进行了非对称加密。所以说,HTTP 安全性没有 HTTPS高,但是 HTTPS 比HTTP耗费更多服务器资源。

    • 对称加密:密钥只有一个,加密解密为同一个密码,且加解密速度快,典型的对称加密算法有DES、AES等;
    • 非对称加密:密钥成对出现(且根据公钥无法推知私钥,根据私钥也无法推知公钥),加密解密使用不同密钥(公钥加密需要私钥解密,私钥加密需要公钥解密),相对对称加密速度较慢,典型的非对称加密算法有RSA、DSA等。

HTTP是不保存状态的协议,如何保存用户状态?相关推荐

  1. android 状态模式,Android编程设计模式之状态模式详解

    本文实例讲述了Android编程设计模式之状态模式.分享给大家供大家参考,具体如下: 一.介绍 状态模式中的行为是由状态来决定的,不同的状态下有不同的行为.状态模式和策略模式的结构几乎完全一样,但它们 ...

  2. 跟着团子学SAP:SAP用户状态管理详解(含权限分配等) OK02

    在SAP中各个模块的管理对象中SAP通过标准的系统状态来进行业务上的一些管控.比如在创建(CRTD)的状态下是无法发生成本的等等. 除了标准的系统状态外,也可以根据客户的实际业务去设计自定义的状态,自 ...

  3. http无状态协议如何保存用户状态

    http无状态协议如何保存用户状态 http无状态协议如何保存用户状态? http无状态协议如何保存用户状态? HTTP 是一种不保存状态,即无状态(stateless)协议.HTTP 协议自身不对请 ...

  4. 动态路由选择协议(三)链路状态路由选择协议

    链路状态不同于距离矢量路由协议依照传闻进行路由选择的工作方式,原因是链路状态路由器从对等路由器那里获取第一手信息.每台路由器会产生一些关于自己.本地直连链路.这些链路的状态(以此而得名)和所有直连相连 ...

  5. 什么是Http协议无状态?怎么解决Http无状态

    一.Http 协议无状态的含义 1.1有状态协议 常见的许多七层协议实际上是有状态的,例如SMTP协议,它的第一条消息必须是HELO,用来握手,在HELO发送之前其他任何命令都是不能发送的;接下来一般 ...

  6. HTTP协议为什么是无状态的?如何让HTTP“有状态”?

    在面试中被问到HTTP协议是有状态还是无状态的,当场就有点懵,因为不会就没答出来.还是得总结一下啵! 一.HTTP协议的状态 HTTP是一种无状态协议,即服务器不保留与客户交易时的任何状态. 也就是说 ...

  7. 属于链路状态路由选择协议,

    SPF (SPF) 属于链路状态路由选择协议,并且是公有标准,理论上是没有网络规模限制的:支持网络的层次化设计,可以将网络分为2层. 层,是通过"区域"的概念来进行区分的. 划分区 ...

  8. 关于联通短信发送程序(SGIP协议)没有收到返回状态报告的报告(使用WireShark分析)

    关于联通短信发送程序(SGIP协议)没有收到返回状态报告的报告(使用WireShark分析) 这是数年前给一个公司做的:使用WireShark抓包分析程序问题:是使用WireShark分析程序涉及到网 ...

  9. Cookie或将被替换!Chrome工程师提议新型HTTP状态管理协议

    问题 Cookie允许无状态的HTTP协议支持有状态会话,在web上,我们依靠Cookie实现了很多有趣的功能.即便如此,Cookie依然还是有很多问题:使用起来不够安全,浪费资源,使用一种令人惊讶的 ...

最新文章

  1. 一份关于kaggle特征构建技巧和心得
  2. 无线基站侧的信令风暴根因——频繁的释放和连接RRC产生大量信令、设备移动导致小区重选信令增加、寻呼信令多...
  3. 20个开源项目托管站点推荐
  4. 《剑指offer》c++版本 4.二维数组中的查找
  5. C#一种最简单实用安全的单例模式,也是线程安全的
  6. BZOJ.3265.志愿者招募加强版(费用流SPFA)
  7. 他曾是离诺贝尔奖最近的中国人之一!
  8. 代表什么_“缶”究竟代表着什么?
  9. TensorFlow tf.keras.losses.MeanSquaredError
  10. linux 扩展挂载盘大小_Linux 挂载新添加磁盘LVM配置
  11. 强制卸载Lync Server脱机的CMS并在新位置重建
  12. 23. 线程如何退出结束
  13. limitBy过滤器是配合数组使用的,限制数组元素的个数,话不多说,来个小例子。...
  14. 数据库 使用 笛卡尔积两表联查 查询sql语句
  15. SpringBoot项目从IE浏览器跳转至谷歌浏览器并打包成windows环境下可行EXE文件
  16. oplayer 文件服务器,iPad万能播放器(OPlayer HD)
  17. 关闭微信内置浏览器页面
  18. 无法加载文件 C:\Users\haoqi\Documents\WindowsPowerShell\profile.ps1,因为在此系统上禁止运行脚本
  19. Python 进程、线程、协程傻傻分不清楚?详细总结(附代码)
  20. 计算机学业水平测试表格题,2010 年信息技术学业水平考试试题

热门文章

  1. 【攻克力扣200题--48】216. 组合总和 III
  2. WVD: Wigner-Ville Distibution
  3. 用Python实现斐波那契(Fibonacci)函数
  4. 手机数控模拟器安卓版_数控机床模拟器
  5. HTML-img图片标签
  6. 【转】JavaScript 中的垃圾回收和内存泄露如何处理
  7. VS 和Qt快速格式化快捷键
  8. 免费送一块 500G 固态硬盘!
  9. 民间秘术——鸟笼飞遁
  10. Java Swing详细操作