当前位置: 首页 > news >正文

2024 高级前端面试题之 HTTP模块 「精选篇」

该内容主要整理关于 HTTP模块 的相关面试题,其他内容面试题请移步至 「最新最全的前端面试题集锦」 查看。

HTTP模块精选篇

  • 1. HTTP 报文的组成部分
  • 2. 常见状态码
  • 3. 从输入URL到呈现页面过程
      • 3.1 简洁
      • 3.2 详细
  • 4. TCP、UDP相关
  • 5. HTTP2相关
  • 6. https相关
  • 7. WebSocket的实现和应用
  • 8. Token、cookie、Session区别
  • 9. 一个图片 url 访问后直接下载怎样实现
  • 10. fetch 发送 2 次请求的原因
  • 11. GET 和 POST 的区别
  • 12. 301 和 302 的区别
  • 13. DNS的作用、DNS解析的详细过程,DNS优化原理
  • 14. 简单请求和复杂请求
  • 15. Http请求中的keep-alive有了解吗
  • 16. 管道机制的作用是什么
  • 17. 什么情况下会触发 option 请求
  • 18. GET 可以上传图片吗
  • 19. CDN 的作用和原理
  • 20. 强缓存命中发生了什么?
  • 21. CORS跨域的原理
  • 22. 在深圳的网页上输入百度,是怎么把这个请求发到北京的
  • 23. 为什么使用多域名部署?
  • 24. 页面10张img,http1是怎样的加载表现?怎样解决的?
  • 25. 说一说SSO单点登录
  • 26. 说一说OAuth
  • 27. HTTP 中的 301、302、303、307、308 响应状态码


1. HTTP 报文的组成部分

请求报文

  • 请求行 ( http 方法 + 页面地址 + http 协议 + 版本)
  • 请求头( key + value 值)
  • 空行(服务端通过空行来判断下一部分不再是请求头,而当做请求体来解析)
  • 请求体(数据部分)

响应报文

  • 状态行 + 响应头 + 空行 + 响应体

2. 常见状态码

状态码分类

  • 1xx:服务器收到请求
  • 2xx:请求成功,如 200
  • 3xx:重定向,如 302
  • 4xx:客户端错误,如 404
  • 5xx:服务端错误,如 500

常见状态码

  • 200:成功
  • 301:永久重定向(配合 location,浏览器自动处理)
  • 302:临时重定向(配合 location,浏览器自动处理)
  • 304:资源未被修改
  • 400: 请求语法错误
  • 401: 未授权
  • 403:没权限
  • 404:资源未找到
  • 500:服务器错误
  • 504:网关超时

HTTP状态码
[待上传]

3. 从输入URL到呈现页面过程

3.1 简洁

  • 浏览器的地址栏输入URL并按下回车;
  • DNS 解析:将域名解析成 IP 地址;
  • TCP 连接:TCP 三次握手;(三次握手的目的:为了防止已经失效的连接 请求报文段突然又传送到了服务器端,从而产生错误)
  • 发送 HTTP 请求;
  • 服务器处理请求并返回 HTTP 报文;
  • 浏览器解析渲染页面;
  • 断开连接:TCP 四次挥手

3.2 详细

HTTP请求示意图
在这里插入图片描述

浏览器中的HTTP请求从发起到结束一共经历了如下八个阶段:构建请求、查找缓存、准备IP和端口、等待TCP队列、建立TCP连接、发起HTTP请求、服务器处理请求、服务器返回请求和断开连接

  • 用户输入url并回车

  • 浏览器进程检查url,组装协议,构成完整的url

  • 浏览器进程通过进程间通信(IPC)把url请求发送给网络进程

  • 网络进程接收到url请求后检查本地缓存是否缓存了该请求资源,如果有则将该资源返回给浏览器进程

  • 如果没有,网络进程向web服务器发起http请求(网络请求),请求流程如下:

    • 进行DNS解析,获取服务器ip地址,端口
    • 利用ip地址和服务器建立tcp连接
    • 构建请求头信息
    • 发送请求头信息服务器响应后,网络进程接收响应头和响应信息,并解析响应内容
  • 网络进程解析响应流程:

    • 检查状态码,如果是301/302,则需要重定向,从 Location 自动中读取地址,重新进行第4步,如果是200,则继续处理请求
    • 200响应处理:检查响应类型Content-Type,如果是字节流类型,则将该请求提交给下载管理器,该导航流程结束,不再进行后续的渲染,如果是html则通知浏览器进程准备渲染进程准备进行渲染
  • 准备渲染进程

    • 浏览器进程检查当前url是否和之前打开的渲染进程根域名是否相同,如果相同,则复用原来的进程,如果不同,则开启新的渲染进程
  • 传输数据、更新状态

    • 渲染进程准备好后,浏览器向渲染进程发起“提交文档”的消息,渲染进程接收到消息和网络进程建立传输数据的“管道”
    • 渲染进程接收完数据后,向浏览器发送“确认提交”
    • 浏览器进程接收到确认消息后更新浏览器界面状态:安全、地址栏url、前进后退的历史状态、更新web页面

4. TCP、UDP相关

  • 4.1 UDP 和 TCP 有什么区别
  • 4.2 TCP 为什么要三次握手
  • 4.3 三次握手过程中可以携带数据吗
  • 4.4 TCP 的四次挥手
  • 4.5 TCP 和 UDP 的区别
  • 4.6 HTTP 和 TCP 的不同

5. HTTP2相关

  • 5.1 说一下 http2.0
  • 5.2 HTTP2 和 HTTP1 有什么区别
  • 5.3 http/2 为什么要做头部压缩,实现原理是什么?
  • 5.4 http/2 的 Server Push 有什么优点
  • 5.5 谈谈你对多路复用的理解

6. https相关

  • 6.1 HTTPS 加的一层 SSL 在七层中哪个位置
  • 6.2 https 协议的优点
  • 6.3 https 协议的缺点
  • 6.4 http 与 https 区别
  • 6.5 https 传输的具体过程
  • 6.6 HTTPS 的整体过程分为证书验证和数据传输阶段
  • 6.7 介绍一下 https 的握手过程
  • 6.8 为什么 https 数据传输使用对称加密
  • 6.9 介绍下 https 中间人攻击的过程
  • 6.10 HTTPS 握手过程中,客户端如何验证证书的合法性
  • 6.11 问题
  • 6.12 数字签名?它是什么
  • 6.13 谈谈对数字证书的理解
  • 6.14 为什么说数字证书就能对通信方的身份进行验证呢
  • 6.15 请详细的说一下 HTTPS 它的加密传输过程,涉及到哪些算法呢?
  • 6.16 描述一下 RSA 握手
  • 6.17 ECDHE 握手和 RSA 握手又有什么区别呢
  • 6.18 你知道 TSL1.3 版本吗?它较 TSL1.2 做了哪些改进呢?
  • 6.19 介绍下 HTTPS 中间人攻击
  • 6.20 http/https 协议总结

7. WebSocket的实现和应用

  • 7.1 什么是 WebSocket
  • 7.2 WebSocket 是什么样的协议,具体有什么优点
  • 7.3 理解WebSocket协议的底层原理、与HTTP的区别

8. Token、cookie、Session区别

  • 8.1 Cookie 和 session 的区别
  • 8.2 cookie 和 token 都存放在 header 中,为什么不会劫持 token?
  • 8.3 介绍下如何实现 token 加密

9. 一个图片 url 访问后直接下载怎样实现

10. fetch 发送 2 次请求的原因

11. GET 和 POST 的区别

12. 301 和 302 的区别

13. DNS的作用、DNS解析的详细过程,DNS优化原理

14. 简单请求和复杂请求

15. Http请求中的keep-alive有了解吗

16. 管道机制的作用是什么

17. 什么情况下会触发 option 请求

18. GET 可以上传图片吗

19. CDN 的作用和原理

  • 如何捕获 CDN 上的 js 运行时导致的详细错误信息?

20. 强缓存命中发生了什么?

  • 默认的强制缓存时间是多少?

21. CORS跨域的原理

  • CORS的哪些是简单请求?
  • CORS的预检请求具体是怎样的?
  • 为什么简单请求不需要预检?
  • 复杂请求预检检查什么东西?
  • 如果CORS附带身份凭证要怎样做?
  • 如何减少CORS预请求的次数?

22. 在深圳的网页上输入百度,是怎么把这个请求发到北京的

23. 为什么使用多域名部署?

24. 页面10张img,http1是怎样的加载表现?怎样解决的?

25. 说一说SSO单点登录

26. 说一说OAuth

27. HTTP 中的 301、302、303、307、308 响应状态码

相关文章:

2024 高级前端面试题之 HTTP模块 「精选篇」

该内容主要整理关于 HTTP模块 的相关面试题,其他内容面试题请移步至 「最新最全的前端面试题集锦」 查看。 HTTP模块精选篇 1. HTTP 报文的组成部分2. 常见状态码3. 从输入URL到呈现页面过程3.1 简洁3.2 详细 4. TCP、UDP相关5. HTTP2相关6. https相关7. WebSocket的…...

【Linux C | 网络编程】netstat 命令图文详解 | 查看网络连接、查看路由表、查看统计数据

😁博客主页😁:🚀https://blog.csdn.net/wkd_007🚀 🤑博客内容🤑:🍭嵌入式开发、Linux、C语言、C、数据结构、音视频🍭 🤣本文内容🤣&a…...

Python爬虫存储库安装

如果你还没有安装好MySQL、MongoDB、Redis 数据库,请参考这篇文章进行安装: Windows、Linux、Mac数据库的安装(mysql、MongoDB、Redis)-CSDN博客 存储库的安装 上节中,我们介绍了几个数据库的安装方式,但…...

用函数求最小公倍数和最大公约数(c++题解)

题目描述 输入两个正整数m和n,求其最大公约数和最小公倍数。 提示,求最大公约数用一个函数实现。本题求最大公约数必须用高效算法,如辗转相除法,朴素算法要超时。 输入格式 第1行:两个非整数,值在0&…...

鲜花销售|鲜花销售小程序|基于微信小程序的鲜花销售系统设计与实现(源码+数据库+文档)

鲜花销售小程序目录 目录 基于微信小程序的鲜花销售系统设计与实现 一、前言 二、系统功能设计 三、系统实现 1、前台功能模块 2、后台功能模块 (1) 后台登录 (2) 管理员功能模块 用户管理 商家管理 鲜花信息管理 鲜花分类管理 管理员管理 系统管理 (3) 商家功…...

三.Linux权限管控 1-5.Linux的root用户用户和用户组查看权限控制信息chmod命令chown命令

目录 三.Linux权限管控 1.Linux的root用户 root用户(超级管理员) su和exit命令 sudo命令 为普通用户配置sudo认证 三.Linux权限管控 2.用户和用户组 用户,用户组 用户组管理 用户管理 getent---查看系统中的用户 三.Linux权限管控…...

Jmeter学习系列之四:测试计划元素介绍

测试计划元素 JMeter包含各种相互关联但为不同目的而设计的元素。在开始使用JMeter之前,最好先了解一下JMeter的一些主要元素。 注意:测试计划包含至少一个线程组。 以下是JMeter的一些主要组件: 测试计划(Plan)线程组(Thread Group)控制器…...

LeetCode.1686. 石子游戏 VI

题目 题目链接 分析 本题采取贪心的策略 我们先假设只有两个石头a,b, 对于 Alice 价值分别为 a1,a2, 对于 Bob 价值而言价值分别是 b1,b2 第一种方案是 Alice取第一个,Bob 取第二个,Alice与Bob的价值差是 c1 a1 - b1&#xf…...

【硬件产品经理】锂电池充电时间怎么计算?

目录 前言 电池容量 充电器功率 电能转换效率 充电时间计算 作者简介<...

Oracle篇—普通表迁移到分区表(第五篇,总共五篇)

☘️博主介绍☘️&#xff1a; ✨又是一天没白过&#xff0c;我是奈斯&#xff0c;DBA一名✨ ✌✌️擅长Oracle、MySQL、SQLserver、Linux&#xff0c;也在积极的扩展IT方向的其他知识面✌✌️ ❣️❣️❣️大佬们都喜欢静静的看文章&#xff0c;并且也会默默的点赞收藏加关注❣…...

作为开发人的我们,怎么可以不了解这些?

​​​​​​​必备技能&#xff1a; 文章结尾处&#xff0c;有资源获取方式 Spring Spring是一个轻量级的Java框架&#xff0c;它可以用于开发各种Java应用程序。Spring提供了丰富的功能&#xff0c;包括IoC容器、AOP、事务管理、Web开发、安全管理等等。Spring的IoC容器可以…...

基于 Echarts 的 Python 图表库:Pyecahrts交互式的日历图和3D柱状图

文章目录 概述一、日历图和柱状图介绍1. 日历图基本概述2. 日历图使用场景3. 柱状图基本概述4. 柱状图使用场景 二、代码实例1. Pyecharts绘制日历图2. Pyecharts绘制2D柱状图3. Pyecharts绘制3D柱状图 总结 概述 本文将引领读者深入了解数据可视化领域中的两个强大工具&#…...

web应用课——(第四讲:中期项目——拳皇)

代码AC Git地址&#xff1a;拳皇——AC Git链接...

Python爬虫http基本原理

Python爬虫逆向系列&#xff08;更新中&#xff09;&#xff1a;http://t.csdnimg.cn/5gvI3 HTTP 基本原理 在本节中&#xff0c;我们会详细了解 HTTP 的基本原理&#xff0c;了解在浏览器中敲入 URL 到获取网页内容之间发生了什么。了解了这些内容&#xff0c;有助于我们进一…...

iOS17使用safari调试wkwebview

isInspectable配置 之前开发wkwebview的页面的时候一直使用safari调试&#xff0c;毕竟jssdk交互还是要用这个比较方便&#xff0c;虽说用一个脚本插件没问题。不过还是不太方便。 但是这个功能突然到了iOS17之后发现不能用了&#xff0c;还以为又是苹果搞得bug&#xff0c;每…...

二叉树(1)

1 树概念及结构 1.1树的概念 树是一种非线性的数据结构&#xff0c;它是由n&#xff08;n>0&#xff09;个有限结点组成一个具有层次关系的集合。 把它叫做树是因为它看起来像一棵倒挂的树&#xff0c;也就是说它是根朝上&#xff0c;而叶朝下的。 有一个特殊的结点&a…...

ArcGIS Pro字段编号相关代码

字段属于SHP文件的重要组成部分&#xff0c;在某些时候需要对字段进行编号&#xff0c;这里为大家介绍一下字段编号相关的代码&#xff0c;希望能对你有所帮助。 数据来源 教程所使用的数据是从水经微图中下载的POI数据&#xff0c;除了POI数据&#xff0c;常见的GIS数据都可…...

AJAX-URL查询参数

定义&#xff1a;浏览器提供给服务器的额外信息&#xff0c;让服务器返回浏览器想要的数据 http://xxxx.com/xxx/xxx?参数名1值1&参数名2值2 axios语法 使用axios提供的params选项 注意&#xff1a;axios在运行时把参数名和值&#xff0c;会拼接到url?参数名值 axios(…...

DBeaver连接ClickHouse,时间少了8小时

文章目录 业务场景问题描述解决办法 业务场景 表字段time&#xff0c;类型为Datetime&#xff0c;插入时间格式为“yyyy-MM-dd HH:mm:ss” 问题描述 插入表中的时间比正常给的时间少了8小时。如&#xff0c;给定时间为&#xff1a; 2024-01-30 14:52:08 在表中显示的时间为&…...

week03day03(文件操作、正则表达式1)

一、文件操作 1.数据持久化&#xff08;数据本地化&#xff09; -- 将数据保存在硬盘 程序中的数据默认是保存在运行内存中的&#xff0c;保存在运行内存中的数据在程序运行结束后会自动释放。如果希望在程序结束后&#xff0c;数据仍可以使用&…...

从WWDC看苹果产品发展的规律

WWDC 是苹果公司一年一度面向全球开发者的盛会&#xff0c;其主题演讲展现了苹果在产品设计、技术路线、用户体验和生态系统构建上的核心理念与演进脉络。我们借助 ChatGPT Deep Research 工具&#xff0c;对过去十年 WWDC 主题演讲内容进行了系统化分析&#xff0c;形成了这份…...

云启出海,智联未来|阿里云网络「企业出海」系列客户沙龙上海站圆满落地

借阿里云中企出海大会的东风&#xff0c;以**「云启出海&#xff0c;智联未来&#xff5c;打造安全可靠的出海云网络引擎」为主题的阿里云企业出海客户沙龙云网络&安全专场于5.28日下午在上海顺利举办&#xff0c;现场吸引了来自携程、小红书、米哈游、哔哩哔哩、波克城市、…...

PPT|230页| 制造集团企业供应链端到端的数字化解决方案:从需求到结算的全链路业务闭环构建

制造业采购供应链管理是企业运营的核心环节&#xff0c;供应链协同管理在供应链上下游企业之间建立紧密的合作关系&#xff0c;通过信息共享、资源整合、业务协同等方式&#xff0c;实现供应链的全面管理和优化&#xff0c;提高供应链的效率和透明度&#xff0c;降低供应链的成…...

解锁数据库简洁之道:FastAPI与SQLModel实战指南

在构建现代Web应用程序时&#xff0c;与数据库的交互无疑是核心环节。虽然传统的数据库操作方式&#xff08;如直接编写SQL语句与psycopg2交互&#xff09;赋予了我们精细的控制权&#xff0c;但在面对日益复杂的业务逻辑和快速迭代的需求时&#xff0c;这种方式的开发效率和可…...

c++ 面试题(1)-----深度优先搜索(DFS)实现

操作系统&#xff1a;ubuntu22.04 IDE:Visual Studio Code 编程语言&#xff1a;C11 题目描述 地上有一个 m 行 n 列的方格&#xff0c;从坐标 [0,0] 起始。一个机器人可以从某一格移动到上下左右四个格子&#xff0c;但不能进入行坐标和列坐标的数位之和大于 k 的格子。 例…...

工程地质软件市场:发展现状、趋势与策略建议

一、引言 在工程建设领域&#xff0c;准确把握地质条件是确保项目顺利推进和安全运营的关键。工程地质软件作为处理、分析、模拟和展示工程地质数据的重要工具&#xff0c;正发挥着日益重要的作用。它凭借强大的数据处理能力、三维建模功能、空间分析工具和可视化展示手段&…...

使用 Streamlit 构建支持主流大模型与 Ollama 的轻量级统一平台

🎯 使用 Streamlit 构建支持主流大模型与 Ollama 的轻量级统一平台 📌 项目背景 随着大语言模型(LLM)的广泛应用,开发者常面临多个挑战: 各大模型(OpenAI、Claude、Gemini、Ollama)接口风格不统一;缺乏一个统一平台进行模型调用与测试;本地模型 Ollama 的集成与前…...

Java + Spring Boot + Mybatis 实现批量插入

在 Java 中使用 Spring Boot 和 MyBatis 实现批量插入可以通过以下步骤完成。这里提供两种常用方法&#xff1a;使用 MyBatis 的 <foreach> 标签和批处理模式&#xff08;ExecutorType.BATCH&#xff09;。 方法一&#xff1a;使用 XML 的 <foreach> 标签&#xff…...

JVM 内存结构 详解

内存结构 运行时数据区&#xff1a; Java虚拟机在运行Java程序过程中管理的内存区域。 程序计数器&#xff1a; ​ 线程私有&#xff0c;程序控制流的指示器&#xff0c;分支、循环、跳转、异常处理、线程恢复等基础功能都依赖这个计数器完成。 ​ 每个线程都有一个程序计数…...

【从零学习JVM|第三篇】类的生命周期(高频面试题)

前言&#xff1a; 在Java编程中&#xff0c;类的生命周期是指类从被加载到内存中开始&#xff0c;到被卸载出内存为止的整个过程。了解类的生命周期对于理解Java程序的运行机制以及性能优化非常重要。本文会深入探寻类的生命周期&#xff0c;让读者对此有深刻印象。 目录 ​…...