前端面试集中复习 - http篇

news/2024/7/7 21:08:23

1. http请求方式

HTTP请求方式有哪些:GET  POST PUT DELETE OPTIONS

1) GET  POST 的区别?

场景上:

  GET 用于获取资源而不对服务器资源做更改提交的请求,多次执行结果一致。用于获取静态数据,幂等。

  POST:会对服务器的资源做更改进而影响数据,不幂等。

状态:

  浏览器不会对POST请求进行主动缓存,业务逻辑很少对POST做缓存,对GET请求会有缓存,浏览器强刷会清除缓存数据。

安全性:

  GET的参数的放在url,明文发送,不安全,易被捕获。

  POST支持更多种类的请求参数数据类型,放在请求头里可以更安全传输。

2) PUT请求和POST的区别?

对于更新的定义: PUT请求通常是为了修改数据内容,但不会增加种类

  例如:修改登录状态,在线、离线、忙碌,仅会改变状态值,不会对状态枚举值发生改变

POST请求既可以修改内容,同时也代表着可能增加类型种类,例如:可能在状态上增加一种免打扰状态

3) OPTIONS请求方法及使用场景?

 是浏览器的自动行为,是一种http请求方法,主要功能是一个预处理 预发送,浏览器会在请求之前浏览器主动发送一个体积较小,速度较快的请求,和服务器交互一种合适的方式传输数据,并利用服务器端的回复获取一部分服务器的状态和性能 判断浏览器是否需要做缓存等逻辑,检查访问权限,CORS等,可以顺利交互。

4) 了解http协议的头部算法吗,是如何降低开销的?

HPACK算法:

  1) 客户端和服务端共同维护建立字典,引用索引来标识重复的字符串

  2) 通过编码算法压缩字符串,从而进一步减小请求头的大小

客户端和服务端都可以利用字典来跟踪和实时访问存储之前发送的数据值,也可以实时记忆,对于相同的数据,就不再通过每次请求和响应重复发送。

5) 上述字典的生命周期是如何?如何保证被更新?

  首部表在http连接期内,始终保证存在并独立的,由客户端和服务端共同演进更新

  每次新增的首部会通过一个键值对追加到末尾,更新的值会替换原有的位置

6)请求头和响应头

请求头 是为了让浏览器告知服务端自己的能力和配置

1. 常见的content-type有哪些

Accept - *  浏览器能处理的能力

connection  表示浏览器和服务端之间的连接类型

cookie 页面设置的内容,一些后台配置,服务器端可以注入权限等内容

host  发出请求的页面所在的域

referer  表示当前页面的运行身份

user-agent 判断浏览器设备类型,操作版本等执行环境

响应头 服务器端告知自己的能力

Date  请求发送的时间

sever

connection

cache-control

content-type

content-type属性值:

application/x-www-form-urlencoded - 原生form表单的形式

multipart/form-data  - post常用,表单提交post

application/json:  序列化后的JSON字符串

2. HTTP状态码

204: 成功,content 返回为空,但是正确处理了

206: 客户端进行了范围请求,请求头里会有一个 content-range

301:永久重定向,例如访问地址已经不用了,会被永久重定向到新的地址,域名改变或者资源地址改变

302:临时重定向,例如某个特殊节日等,会有一个特别的活动地址,过了这段期间会恢复原地址

303:请求的资源有另一个合适的途径,应该使用get方法获取资源,会将POST请求变为GET请求进行重定向

304:通常跟浏览器缓存相关,表示本次请求附带的条件未满足服务器的要求,服务器发现后让浏览器使用之前请求的缓存来使用

307:当前重定向会严格按照浏览器的诉求,不会改变请求方式

302 303 307这三种重定向有什么区别

302是http1.0中出现的重定向,在http1.1 中细化出了303和307

400:请求报文出现了语法错误

401:认证失败

403:明确拒绝,客户端非法,forbidden

404:服务器端找不到对应的资源,当服务端拒绝查询资源且未说明理由时也会返回404

405:当前请求方式不被允许 method not allowed

500:执行请求发生错误

501:暂时不支持当前操作

503:超负荷或停机维护

3. http 1.x 和 2.x 的区别

2.0: 持久型链接,复用同一个TCP连接,(1.1更新)

      二进制传输,头信息和数据体都用二进制传输

      多路复用,在同一个TCP连接中同时进行多个请求

      数据流,以数据流ID进行索引

      头信息压缩:对头信息进行字典化索引以及压缩

      2.0允许服务器端主动向客户端未经请求地推送资源,即资源非动态数据

### keep-alive

什么是keep-alive,建立过程和使用场景?优缺点?

建立过程:

    1) 客户端发送报文夹带keep-alive的头配置

    2) 服务端接收并处理,并且返回keep-alive的返回头

    3) 客户端和服务端共同维持当前长链接建立

服务端主动断开:

    1) 需要先等客户端发起请求

    2) 服务端返回请求并且不带keep-alive

    3) 关闭连接

客户端主动断开:

    1) 客户端请求头带上close字段,keep-alive改成close

    2) 服务端接受后处理并断开连接,返回给客户端

    3) 客户端接收资源并关闭连接

好处:

  服务端-CPU和内存占用下降,请求和回复复用管道变少,降低拥堵,减少了后续请求的延时,无需每次异常都关闭TCP

缺点:

  长时间的连接可能会导致无效占用

4. https 和 websocket

 SSL/TLS是什么 作用 和 工作原理

  是一层安全协议,用于身份验证 信息加密 完整性校验

依赖于散列函数hash、对称加密、不对称加密

  散列函数hash:

   MD5、SHA1等 => 单向不可逆,且输入敏感型,输出长度固定,所以对于数据的修改都会导致值的变化,所以可以做完整性校验,判断信息中途未经修改

  对称加密:

   特点:两者共用同一种密钥,同时对其进行加解密

   缺点:不能保证密钥传输的安全性

  非对称加密:

   公钥 私钥,利用公钥和对应私钥的互相加解密能力进行加密传输

   缺点:会被中间截取,导致信息被篡改,因此会有一个数字证书,即相当于一个可信度高的机构,公钥和其他信息加密形成一个摘要,传输信息和认证中心的私钥等生成的签名signature形成数字证书,在发送时发出去,接收时用同样的算法生成一套摘要,两个进行对比判断是否被篡改,保证传输的安全。用两次非对称加密,来保证中途信息安全。


5. websocket 基础原理? 使用方式特点?

全双工的网络技术,属于应用层协议,基于TCP传输协议,可以复用HTTP的通道

原理:

  请求: 客户端向服务端发送notify, 包含接收者的 id 和通知的 event

  推送: 立即通知所有客户端,id满足的客户端,才会响应当前推送的反馈

特点:实时性比较强,双向传输。握手一次就可以建立一个长链接,可以接收客户端的推送。

6. DNS 与 网络协议

DNS 作用是将域名解析为 IP 地址,客户端会向DNS服务器发送查询请求,服务器返回给我们对应的IP地址。

迭代查询:

  每次请求都会单词访问不同级别的DNS服务器,没查到就再次发送请求查询,直到返回结果。

递归查询:

  只向目标服务器发送一次请求,优先自我查找,未找到会向下一级服务器进一步查询,直到返回结果。

7. OSI七层模型

应用层 表示层 会话层 传输层 网络层 数据链路层 物理层

应用层 表示层 会话层 统称为应用层

8. TCP 和 UDP

区别?

    TCP有握手机制,校验,有安全保障,注重完整性,确定性的领域

    UDP注重分发速度


http://lihuaxi.xjx100.cn/news/2122484.html

相关文章

二刷代码随想录——单调栈day58

文章目录 前言单调栈知识点 单调栈的特点一、739. 每日温度二、496. 下一个更大元素 I总结 前言 一个本硕双非的小菜鸡,备战24年秋招,计划二刷完卡子哥的刷题计划,加油! 二刷决定精刷了,于是参加了卡子哥的刷题班&…

【Java程序设计】【C00372】基于(JavaWeb)Springboot的社区网格化管理系统(有论文)

TOC 博主介绍:java高级开发,从事互联网行业六年,已经做了六年的毕业设计程序开发,开发过上千套毕业设计程序,博客中有上百套程序可供参考,欢迎共同交流学习。 项目简介 项目获取 🍅文末点击卡片…

Vue 发送Ajax请求多种方式

1. 发送ajax请求的方式 方案一:jq 的ajax(在 vue 中不推荐同时使用)方案二:js 原始官方 fetch方法方案三:axios 第三方 2. 方案一 后端视图函数 from rest_framework.viewsets import ViewSet from rest_framework…

小红书矩阵批量发布工具,一键发布笔记软件

昨日,我收到了一条充满渴望与期待的私信,来自一位小红书的矩阵账号博主。他手握多个账号,渴望寻找一款能够助力他批量发布笔记的神器,每日能够轻松达到百篇的发布量。这份迫切的需求,我深感体会,因为这正是…

【链表】Leetcode 146. LRU 缓存【中等】

LRU 缓存 请你设计并实现一个满足 LRU (最近最少使用) 缓存 约束的数据结构。 实现 LRUCache 类: LRUCache(int capacity) 以 正整数 作为容量 capacity 初始化 LRU 缓存int get(int key) 如果关键字 key 存在于缓存中,则返回关键字的值,否…

再次度过我的创作纪念日

机缘 写博客的机缘巧合已经在上一篇博客中写到了,至于收获和成就也不一一赘述了。想和大家聊的呢就这最近这一年左右的经历吧 日常 自从2022年开始,入职了一家大型的项目外派公司,名字就不说了。开始了我的保险公司系统的开发工作。工作地点…

AI论文速读 | 具有时间动态的路网语义增强表示学习

论文标题: Semantic-Enhanced Representation Learning for Road Networks with Temporal Dynamics 作者: Yile Chen(陈亦乐) ; Xiucheng Li(李修成); Gao Cong(丛高) ; Zhifeng Ba…

数据库SQLSever——数据查询

一、无条件查询 查询表的所有信息 SELECT * FROM 表名 例:查询学生表 SELECT * FROM student087 二、根据列名查询 根据列名查询表信息 SELECT [列名],[列名],.... FROM 表名 例:查询学生表的学生学号和姓名 SELECT SNO,SNAME FROM STU…