计算机网络面试题(十五):HTTP无状态协议是什么?怎么解决的?

news/2024/5/18 13:43:04 标签: session, cookie, jwt

在这里插入图片描述在这里插入图片描述

文章目录

  • HTTP无状态协议
  • Cookie&Session机制
  • JWT机制


HTTP无状态协议

无状态协议(Stateless Protocol)是指浏览器对于事物的处理没有记忆功能

例如:通过账户密码登录进了一个网站,当再次进入时则需要重新输入账户密码……

HTTP就是一种无状态协议,它对用户的操作没有记忆功能。为了解决这种情况,引出了Cookie&Session机制,让浏览器具备了记忆功能
在这里插入图片描述


Cookie&Session机制

  1. 当服务器第一次收到请求时,会主动开辟一块session空间(即创建了session对象),同时生成一个sessionid
  2. 服务器在给浏览器回复响应时,会在响应头添加set-cookie: JSESSIONID=XXXXX,将sessionid回复给浏览器
  3. 客户端收到响应后,在本地设置一个对应JSESSIONID=XXXXXcookie信息

cookie(饼干)是有过期时间的,过期时间就是浏览器会话结束——关闭网站

在这里插入图片描述

在此之后,客户端每次再向同一个网站发送请求时,请求头部都会带上cookie信息(包含了sessionid)

服务端在收到请求后,读取cookie信息,获取sessionid,session空间中找到对应的信息进行比对

浏览器获得了记忆功能

在这里插入图片描述


JWT机制

JWT(JSON Web Token)

token:令牌

JWT的功能也是让浏览器具有了记忆功能

JWT是保存在客户端的,广泛应用于单点登录


JWT特点

  • JWT的cookie信息是保存在客户端的

JWT直接进行本地校验即可,验证完毕后,这个token就会在session中随请求一起发送给服务端。这样节省了服务端资源,并且token可以进行多次验证

  • JWT可以实现跨域认证

cookies只能用于单个节点的域/子域。如果需要通过第三个节点访问,就会被禁止。JWT可以通过多个节点进行用户认证


http://www.niftyadmin.cn/n/1488586.html

相关文章

编程必修课:面试被问设计模式

文章目录设计模式【1】设计模式大致分类【2】MVC模式【3】Django框架如何遵循MVC设计模式 所谓设计模式,就是面向对象编程中的各种现成的套路,也可以说是经验总结,是许多前辈技术人员经过长期实践总结出来的优质解决方案 针对不同的需求场景…

计算机网络面试题(十六):HTTP1.0/1.1/2.0版本了解不?

文章目录HTTP1.0HTTP1.1HTTP2.0HTTP1.0 HTTP1.0是1996年引入的 HTTP1.0仅提供了最基本的认证,用户名和密码都未加密HTTP1.0仅支持短连接,每次发送数据都会经过TCP三次握手和四次挥手,效率低HTTP1.0只使用了header的ifmodified-Since和Expires…

面试被问进程和线程,面试官说答得不错!

进程和线程 【1】CPU CPU(中央处理器)是计算机的核心,承担了所有的计算任务 CPU就像一座无时无刻都在运行的工厂 一个工厂(CPU)会有许多的车间 假定CPU一次只能运行一个任务,即一次只能供给一个车间使用…

数据库MySQL基础(四):搭建一个简易的成绩管理系统

文章目录成绩管理系统【1】学生表【2】课程表【3】成绩表成绩管理系统 mysql> create database gradesystem; Query OK, 1 row affected (0.00 sec)mysql> show databases; -------------------- | Database | -------------------- | information_schema | |…

操作系统面试题(十六):再讲下虚拟存储器

虚拟存储器 虚拟存储器是基于前面说过的局部性原理,在程序运行时,可以将部分程序装入内存,而将其他部分留在外存,程序依然运行 外存的大小往往远大于内存,由于局部性原理的作用,我们可以运行的软件的内存…

操作系统面试题(十七):虚拟内存技术如何实现的?

虚拟内存技术 虚拟内存技术的实现是建立在离散分配的内存管理的基础上的 目前最常用的三种实现虚拟内存技术的方法: 请求分页存储管理请求分段存储管理请求段页式存储管理 以上三种方式,无论哪种,都需要以下三个条件: 一定容…

计算机网络面试题(十七):地址栏输入URL后发生了什么?

文章目录DNS域名服务器地址栏输入URL后发生了什么这也是一道面试常见题目,也是我们在学习计算机网络时需要去理解的一个知识点 DNS域名服务器 DNS(Domain Name System 域名系统) 互联网中识别主机的方式有两种:主机名和IP地址 人…

Python多进程和多线程(一):基础概念

文章目录多进程和多线程【1】单核CPU【2】多核CPU【3】进程(process)【4】线程(thread)【5】多任务实现方式【6】小结多进程和多线程 现代的操作系统(例如:MaxOSX,Unix,Linux,Windows)都是支持…