此文章讲解 http 的大纲, 这是一个关于 http 的系列文章, 有兴趣完整了解相关内容的可以点个关注或者点个关注, 以防找不到此系列文章 。

废话不多说, 直接上代码以及图例(为了让大家方便阅读, 都有自己验证过程的一些图片作为分享) 。

一: 前后端对 http 的简单掌握:

 1. 后台开发者(http的认知):1. http method? ( 请求的方式 )2. http status code? ( http请求状态码 )2. 前端开发者(http缓存的认知):1. http 缓存 ?2. 客户端 缓存 ?3. 代理服务器 缓存 ?4. 缓存 验证可用性 ?3. 总结 IT 工程师为什么对 http 不了解的缘由:1. http 协议作为 web 开发中最基础的内容, 所有与 web 开发相关, 数据传输/内容传输 都是要通过 http 协议的 。2. 现在 web 开发的同学在入门的时候很难有机会, 有人告诉我们要先从 http 协议开始学习 。3. 先从 http 协议开始学习, 对于没有计算机基础的同学也很难去学习 。4. 我们入门的时候都是直接上手 直接去做 页面 / demo / 框架 。5. 对于后端更是直接上手 框架 。
图片示例:


二: http 对于开发者是很重要的原因:

1. 前端所有的 静态资源加载/数据加载 都是需要 http 协议进行发送的 。2. 后端开发者所做的服务, 提供的内容与数据丢给 web、app 客户端也是需要通过 http 去发送的 。3. 浏览器与服务器如何进行交互, 有哪些内容可以影响到数据加载的速度或者传输效率, 我需要了解它的实现逻辑是离不开 http 的 。

三: http 常见简单示例:

1. 输入 URL 打开网页, 请求网页内容, 然后展示给用户 。2. 通过 Ajax 获取数据 (数据格式可以为: JSON / XML / 字符串)。3. img 标签加载图片 - src / script - src / link - src 。

四: http 缓存简单介绍:

 1. 设置缓存: Cache-Control1. Cache-Control : max-age=100 -> 对应的静态资源缓存 100 秒 。2. 给 Cache-Control 设置 public / private 来控制它只能在客户端进行缓存, 还是可以通过代理服务器进行缓存 。3. 给 Cache-Control 设置 must-revalidate 让缓存过期之后必须要到服务端验证过之后, 才能继续使用缓存 。4. no-cache / no-store 控制是否使用缓存 。2. 缓存的验证:1. 因为缓存是存在客户端的, 客户端并不知道服务器是否有改变缓存的这部分数据, 那么我们的缓存就有必要进行一个验证 。2. 我们可以通过 last-modified 配合 if-modified-since 来进行验证 。3. 我们可以通过 etag 配合 if-none-match 来进行验证 。3. 缓存是对 web 服务性能, 提升最大的一环 。
图片示例:


五: http 更多的实际使用:

 1. http 头的作用:1. Content-Type / Content-Encoding 等来约束数据的类型 。2. cookie 用来保持会话信息(session 方案就是通过 cookie 来实现的) 。3. CORS 实现跨域, 并保持安全性限制 。1. 如果我们的跨域服务对所有人进行开放, 那么每个人都可以进行访问, 这样就无法保证我们的服务是安全的 。

六: TCP (http 原理)简单介绍:

1. TCP 的三次握手 。2. HTTPS 创建连接的过程, 以及为什么 HTTPS 就是安全的 。3. 什么是长连接, 以及为什么需要长连接 。4. HTTP2 的 信道复用 又为什么能够提高性能 。

七: 浏览器输入 url 之后, “http” 请求返回 的完整过程:

从我们打开浏览器, 输入 url 之后, 整个有关数据加载的过程所会经历的每个时间点:1. Redirect (重定向): 为什么 Redirect? 因为浏览器可能记录我们输入的 url, 已经永久跳转成一个新的地址了, 所以一开始浏览器就需要判断是否需要 Redirect, 以及 Redirect 到哪里 。2. App cache (应用程序缓存): 查看缓存, 因为我们请求的资源可能已经缓存过了, 所以我们要去 App cache 中查看缓存数据否已经存在; 如果没有缓存, 就要去实际的服务器去请求资源 。3. DNS: 因为我们输入的是域名, 要对应成 IP 之后才能真正的访问到服务器, 所以这个时候要先去把域名解析为对应的 IP 地址, 这个叫做 DNS 解析 。4. TCP: 有了 IP 之后, 我们就要去创建 TCP 链接, 创建 TCP 链接要经过 3 次握手之后才能真正的把链接创建起来; 同时, 如果我们这个请求是 https 的, 要创建一个 https 的链接, 它和 TCP 的 3 次握手又不一样; 因为它中间要有一个保证安全的数据传输的过程 。5. request(请求): 在链接创建好了之后, 才真正发送 http 请求的数据包 。6. Response(响应): 我们在请求的数据包发送完成之后, 服务器接受到这个数据, 进行一个数据处理之后返回这个请求想要的内容, 那么它就开始返回数据, 返回数据之后这个 http 请求才真正的完成 。
图片示例:


之前有整理过部分知识点, 现在将整理的相关内容, 验证之后慢慢分享给大家; 这个专题 就是 “HTTP协议原理与实践代码” 的相关专栏; 不积跬步,无以至千里, 戒焦戒躁 。

如果对你有所帮助,喜欢的可以点个关注, 必然回访; 文章还一直持续打磨 。

有什么想要了解的前端知识吗? 可以评论区留言, 会及时跟进分享所提内容 。

整理知识点不易, 每次都是在工作繁忙之余夜深人静之时整理, 无论知识点是大是小, 都会验证后再分享, 以防自己发表的文章给大家造成误导 。如有问题还望不吝赐教,本人会及时更改 (本文原创, 如需转载,请注明出处) 。

HTTP协议原理下篇文章: HTTP协议相关的网络经典五层模型

HTTP协议原理与代码实践之大纲相关推荐

  1. RRT(快速随机搜索树)算法原理及代码实践

    RRT算法简介 RRT 算法为一种递增式的路径规划算法,算法不断在搜索空间中随机生成采样点,如果该点位于无碰撞位置,则寻找搜索树中离该节点最近的结点为基准结点,由基准结点出发以一定步长朝着该随机结点进 ...

  2. usercf代码java_基于用户的协同过滤算法(UserCF)原理以及代码实践

    简介 协同过滤(collaborative filtering)是一种在推荐系统中广泛使用的技术.该技术通过分析用户或者事物之间的相似性,来预测用户可能感兴趣的内容并将此内容推荐给用户.这里的相似性可 ...

  3. 机器学习/深度学习中的常用损失函数公式、原理与代码实践(持续更新ing...)

    诸神缄默不语-个人CSDN博文目录 最近更新时间:2023.5.8 最早更新时间:2022.6.12 本文的结构是首先介绍一些常见的损失函数,然后介绍一些个性化的损失函数实例. 文章目录 1. 分类 ...

  4. 【反内卷】开创全新AI多模态任务一视听分割:附原理、代码实践、优化教程(一)

    前言 文章原创,出自 cv君,公众号:DeepAI 视界 gif 不能发出声音,大家脑补一下场景.算法找到视频中的打击乐器和钢琴正在发声 gif 不能发出声音,大家脑补一下场景.算法找到视频中的救护车 ...

  5. 推荐算法(四)——经典模型 DeepFM 模型详解及代码实践

    目录 1 介绍 2 模型结构 3 实验结果 4 总结 5 代码实践 1 介绍 DeepFM 是华为诺亚方舟实验室在 2017 年提出的模型. 论文传送门: A Factorization-Machin ...

  6. 深度学习中的IOU计算方式和代码实践

    IOU,全称为intersection of union, 中文名"交并比".这个概念理解起来不难,本文将从原理以及代码实践来解读IOU. 首先要说明的是,IOU在检测领域和分割领 ...

  7. 【NLP】Doc2vec原理解析及代码实践

    本文概览: 1. 句子向量简介 Word2Vec提供了高质量的词向量,并在一些任务中表现良好.虽然Word2Vec提供了高质量的词汇向量,但是仍然没有有效的方法将它们结合成一个高质量的文档向量.对于一 ...

  8. 协议crc计算_CRC校验原理及代码实现(一)

    网上的有关CRC的原理和代码实现的文章,数不胜数,但比较全的好像还没看到:此文是集百家之智慧,加之自己的使用经验和理解汇聚此文,让你快速理解和使用CRC,当然不足之处欢迎评论区吐槽. 1. CRC是什 ...

  9. SSL/TLS协议原理与证书签名多种生成方式实践指南

    本章目录: 0x00 前言简述 CA 认证原理 PKI 公钥基础设施 0x01 自签名SSL证书生成 1.在线(脚本)生成 2.OpenSSL 生成 3.CFSSL 生成 0x03 cfssl 使用实 ...

  10. Websocket协议原理及Ws服务器代码实现

    一.什么是 WebSocket WebSocket 是 HTML5 开始提供的一种,建立在单个 TCP 连接上的全双工的网络通信协议.WebSocket 协议在2008年诞生,2011年成为国际标准. ...

最新文章

  1. 把ListT转换为DataTable
  2. sysdba,sysoper,normal 以及sys,sysdba,dba概念区别
  3. http staus汇总
  4. 深入解读:KubeVela 与 PaaS 有何不同?
  5. 使用java进行婚礼庆祝_#102030:在30天内运行20 10K,庆祝Java 20年
  6. 影子场vs.属性访问器接口第2轮
  7. python列表有哪些操作_python列表的基本操作有哪些
  8. python中文读音-python中文谐音 Python 的中文谐音是什么?
  9. 计算机硬盘的常用分区工具,磁盘分区工具,详细教您硬盘分区工具diskgenius怎么使用...
  10. catia逆向建模步骤_catia逆向建模步骤_什么是3D扫描逆向设计?
  11. bootstrap bootbox 属性及用法
  12. OC Foundation框架 字典
  13. 如何显示隐藏文件和文件扩展名
  14. beyond compare 过期解决方法
  15. kafka-topics.sh 详细说明
  16. MSCOMM32控件注册的两种办法
  17. web期末大作业 使用HTML+CSS制作蓝色版爱宠之家带留言板(5页)
  18. 【BZOJ3875】[Ahoi2014Jsoi2014]骑士游戏 SPFA优化DP
  19. 计算机图形学专业 国内大学排名,虚拟现实应用技术专业大学排名 2020全国排行榜...
  20. Cocos2D引擎学习-动作类的学习(一)

热门文章

  1. 酷派android升级失败,酷派大神X7刷机失败变砖开不了机 救砖教程
  2. html修改字体大小菜鸟,HTML字体大小颜色
  3. sift算法matlab详解,sift算法原理详解及应用
  4. 因一纸设计稿,我把竞品APP扒得裤衩不剩(中)
  5. 测试如何进行有效的需求分析
  6. 详解:路由器性能的各项指标
  7. 官网链接下载QT5 Creator
  8. 网络安全渗透实战详细详解
  9. 计算机网络第七版1-1
  10. 记录:mysql 字符串拼接函数