HTTP协议学习笔记1

news2024/11/23 20:13:09

初识HTTP

 

输入网址进入网页过程发生了什么?

  1. DNS解析:浏览器会向本地DNS服务器发出域名解析请求,如果本地DNS服务器中没有对应的IP地址,则会向上级DNS服务器继续发出请求,直到找到正确的IP地址为止。

  2. 建立TCP连接:浏览器会根据IP地址向服务器发送一个TCP连接请求,建立起与服务器的连接。

  3. 发送请求:浏览器会向服务器发送一个HTTP请求,请求服务器返回相应的网页内容。

  4. 服务器响应:服务器接收到浏览器发送的HTTP请求后,会根据请求的内容返回相应的网页内容,并通过TCP连接将这些内容传输到用户的浏览器。

  5. 浏览器处理响应:浏览器接收到服务器返回的网页内容后,会根据HTML、CSS、JavaScript等语言来解析网页,并将其中的图片、视频等资源也下载到本地。

  6. 关闭连接:当用户关闭网页时,浏览器会向服务器发送一个断开连接请求,服务器收到请求后会关闭与浏览器之间的TCP连接。

什么是HTTP

全称Hyper Text Transfer Protocol超文本传输协议

  • 简单:HTTP协议设计简单,易于实现和使用。

  • 无状态:HTTP协议是无状态协议,即服务器不维护任何关于客户端的信息,每个请求都是独立的,服务器不会从前一个请求中获得任何信息

  • 可扩展:HTTP协议支持多种数据格式和协议,能够自由地扩展和变化。

  • 明文传输:HTTP协议传输的数据是明文的,可能会被窃听、篡改和伪造。

  • 请求响应模式:HTTP协议是基于请求响应模式的协议,客户端发送请求,服务器返回响应。

  • 支持缓存:HTTP协议支持缓存机制,可以减少网络传输的数据量,提高数据传输的效率。

  • 基于TCP/IP:HTTP协议是基于TCP/IP协议栈的应用层协议,使用TCP协议进行可靠传输。

 请求方法

 状态码

HTTP状态码是指在HTTP协议通信过程中,服务器向客户端返回的状态标识。

补充:

302 Found:表示请求的资源暂时被移动到了一个新的URL上,客户端需要使用该URL重新请求。

400 Bad Request:表示请求的语法不正确,服务器无法理解客户端发送的请求。

401 Unauthorized:表示客户端需要进行身份验证,但没有提供有效的凭证。

403 Forbidden:表示服务器拒绝了请求,客户端没有访问权限。

503 Service Unavailable:表示服务器暂时无法处理请求,通常是由于服务器过载或维护。

常用请求头

常用响应头

缓存

HTTP缓存是指在客户端和服务端进行交互时,通过缓存来实现网络传输数据的存储。缓存会在请求发送时,先判断本地是否已经有了所请求的资源,如果有则返回缓存数据,否则请求服务端获取新的数据。

所以有时候资源不更新是因为直接从缓存里获取了资源,有时候我们需要手动清空缓存。

常用的缓存策略包括:

  1. 强制缓存:即在缓存期内,客户端在发起请求时,直接从本地缓存中获取资源,不会向服务器发起请求。常见的缓存控制方式有:Expires和Cache-Control。

  2. 协商缓存:当强制缓存失效时,客户端会通过向服务器发送请求来检查资源是否存在更新,如果服务器资源没有变化,则返回304 Not Modified状态码,客户端就会使用本地的缓存副本。常见的缓存控制方式有:Last-Modified/If-Modified-Since和ETag/If-None-Match。

 缓存可以有效减少网络传输的耗时和流量消耗,从而提升网页的加载速度和用户体验。

 cookie

HTTPS(Hypertext Transfer Protocol Secure)

在HTTP的基础上,经过了数据加密的过程

HTTP 是一种不加密的协议,它传输的数据都是明文的,容易被中间人窃听和篡改;

而HTTPS 则是在 HTTP 的基础上增加了 SSL/TLS 加密机制,保证数据传输的安全性。

HTTPS 通过 SSL/TLS 加密传输数据,使得在传输过程中的数据都被加密,中间人无法获得明文信息。HTTPS 还使用了证书来验证服务器的身份,以避免中间人攻击。

在安全性方面,HTTPS 通常被用于传输一些敏感信息,例如登录凭证、信用卡信息等。

而 HTTP 通常用于传输一些不敏感的信息,例如一些公开的新闻、文件下载等。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/847019.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

关于Log日志

日志常用的如Logback&#xff0c;方便查看日志和打印的SQL&#xff08;或配合idea的一些mybaits日志插件&#xff09;&#xff0c;简单讲讲。 Logback等级 ALL < TRACE < DEBUG < INFO < WARN < ERROR <FATAL <OFF 配置文件结构 configuration appender…

微信小程序读取本地json

首先在项目录下新建【server】文件夹&#xff0c;新建data.js文件&#xff0c;并定义好json数据格式。如下&#xff1a; pages/index/index.ts导入data.js并请求json pages/index/index.wxml页面展示数据

365. 水壶问题

365. 水壶问题 原题链接&#xff1a;完成情况&#xff1a;解题思路&#xff1a;参考代码&#xff1a; 原题链接&#xff1a; 365. 水壶问题 https://leetcode.cn/problems/water-and-jug-problem/description/ 完成情况&#xff1a; 解题思路&#xff1a; /**在任意一个时刻…

[Web_Unagi]xxe注入过滤绕过

文章目录 [Web_Unagi]xxe注入过滤绕过 [Web_Unagi]xxe注入过滤绕过 提示我们需要上传文件&#xff0c;并且flag在根目录下&#xff0c; 上传文件的格式为&#xff1a; <users><user><username>alice</username><password>passwd1</password…

封装上传文件组件(axios,进度条onUploadProgress,取消请求)

目录 定时模拟进度条 方法 A.axios B.xhr 取消请求​​​​​​​ 完整代码 A.自定义上传组件 B.二次封装组件 情况 增加cancelToken不生效&#xff0c;刷新页面 进度条太快->设置浏览器网速 定时模拟进度条 startUpload() {if (!this.file) return;const totalS…

【C++】bind包装器

bind包装器 调用bind的一般形式&#xff1a;auto newCallable bind(callable,arg_list); 其中&#xff0c;newCallable本身是一个可调用对象&#xff0c;arg_list是一个逗号分隔的参数列表&#xff0c;对应给定的 callable的参数。 当我们调用newCallable时&#xff0c;newCa…

【内网穿透】配置公网访问,实现远程连接到内网群晖NAS 6.X

公网远程访问内网群晖NAS 6.X【内网穿透】 文章目录 公网远程访问内网群晖NAS 6.X【内网穿透】前言1. 群晖NAS远程操作2. 创建一条“群晖SSH”隧道 &#x1f340;小结&#x1f340; &#x1f389;博客主页&#xff1a;小智_x0___0x_ &#x1f389;欢迎关注&#xff1a;&#x1…

虚拟ip地址软件哪个好 手机虚拟ip地址软件有哪些

虚拟ip地址修改器 IP转换器软件是一种用于把不同格式的IP地址转换为另一种格式的工具。下面是几种常见的深度IP转换器软件&#xff1a; 1. 深度IP转换器 深度IP转换器是一种收费的、简单易用的在线工具&#xff0c;可以将IPv4地址转换为16进制、2进制和10进制等格式。此外&am…

面向万物智联的应用框架的思考与探索

本文转载自 OpenHarmony TSC 官方微信公众号《峰会回顾第3期 | 面向万物智联的应用框架的思考与探索》 演讲嘉宾 | 余枝强 回顾整理 | 廖 涛 排版校对 | 李萍萍 嘉宾简介 余枝强&#xff0c;OpenHarmony技术指导委员会跨平台应用开发框架TSG负责人&#xff0c;华为终端软件部…

现代C++中的从头开始深度学习【2/8】:张量编程

一、说明 初学者文本&#xff1a;此文本需要入门级编程背景和对机器学习的基本了解。张量是在深度学习算法中表示数据的主要方式。它们广泛用于在算法执行期间实现输入、输出、参数和内部状态。 在这个故事中&#xff0c;我们将学习如何使用特征张量 API 来开发我们的C算法。具…

冠达管理:A股三大指数震荡整理 机构看好反弹趋势延续

周一&#xff0c;沪深两市呈弱势震动格式&#xff0c;创业板指领跌。到收盘&#xff0c;上证综指跌0.59%&#xff0c;报3268.83点&#xff1b;深证成指跌0.83%&#xff0c;报11145.03点&#xff1b;创业板指跌1%&#xff0c;报2240.77点。 资金面上&#xff0c;沪深两市昨日合计…

基于随机森林的回归分析,随机森林工具箱,随机森林的详细原理

目录 背影 摘要 随机森林的基本定义 随机森林实现的步骤 基于随机森林的回归分析 随机森林回归分析完整代码及工具箱下载链接&#xff1a; 随机森林分类工具箱&#xff0c;分类随机森林&#xff0c;随机森林回归工具箱&#xff0c;回归随机森林资源-CSDN文库 https://download.…

C++11之右值引用

C11之右值引用 传统的C语法中就有引用的语法&#xff0c;而C11中新增了的 右值引用&#xff08;rvalue reference&#xff09;语法特性&#xff0c;所以从现在开始我们之前学习的引用就叫做左值引用&#xff08;lvalue reference&#xff09;。无论左值引用还是右值引用&#…

依赖管理插件

项目场景&#xff1a; 接手新项目 第一步: 检查项目 看文件中包管理工具是什么 包管理工具有很多种&#xff0c;不要拿到就npm安装依赖 问题描述 在项目下 安装pnpm总是报错 查看了网上没找到具体解决方案 解决方案&#xff1a; 全局安装pnpm 全局安装pnpm npm insta…

中电金信:ChatGPT一夜爆火,知识图谱何以应战?

随着ChatGPT的爆火出圈 人工智能再次迎来发展小高潮 那么作为此前搜索领域的主流技术 知识图谱前路又将如何呢&#xff1f; 事实上&#xff0c;ChatGPT也并非“万能”&#xff0c;作为黑箱模型&#xff0c;ChatGPT很难验证生成的知识是否准确。并且ChatGPT是通过概率模型执行推…

Java基础入门篇——Java变量类型的转换和运算符(七)

目录 一、变量类型 1.1自动类型转换&#xff08;隐式转换&#xff09; 1.2 强制类型转换&#xff08;显式转换&#xff09; 1.3类型转换的其他情况 二、运算符 2.1算术运算符 2.2比较运算符 2.3逻辑运算符 2.4位运算符 三、总结 在Java中&#xff0c;变量类型的转换…

\vendor\github.com\godror\orahlp.go:531:19: undefined: VersionInfo

…\goAdmin\vendor\github.com\godror\orahlp.go:531:19: undefined: VersionInfo 解决办法 降了go版本(go1.18)&#xff0c;之前是go1.19 gorm版本不能用最新的&#xff0c;降至&#xff08;gorm.io/gorm v1.21.16&#xff09;就可以 修改交插编译参数 go env -w CGO_ENABLED1…

机器学习深度学习—语言模型和数据集

&#x1f468;‍&#x1f393;作者简介&#xff1a;一位即将上大四&#xff0c;正专攻机器学习的保研er &#x1f30c;上期文章&#xff1a;机器学习&&深度学习——文本预处理 &#x1f4da;订阅专栏&#xff1a;机器学习&&深度学习 希望文章对你们有所帮助 语…

订单系统就该这么设计,稳的一批~

订单功能作为电商系统的核心功能&#xff0c;由于它同时涉及到前台商城和后台管理系统&#xff0c;它的设计可谓是非常重要的。就算不是电商系统中&#xff0c;只要是涉及到需要交易的项目&#xff0c;订单功能都具有很好的参考价值&#xff0c;说它是通用业务功能也不为过。今…

单元测试最终结果为Stopped状态(有报错后不继续往下执行)

之前跑了一下项目的单元测试&#xff0c;但是发现一旦有报错后单元测试就不继续往下执行&#xff0c;而且最终的结果是stopped状态&#xff0c;截图如下&#xff1a; 经过排查是因为项目启动的时候有如下的代码&#xff1a; 通过代码可以发现如果项目启动失败&#xff0c;则直接…