http、https以及状态码超全详解

2023-11-17


HTTP

概念

超文本传输协议(Hyper Text Transfer Protocol),是客户端和服务器端请求和应答的标准(TCP),属于应用层。http 的生命周期通过 Request 来界定,也就是 Request 一个 Response(可发送多个Request,接收多个Response,但Request和Response是一对一关系)。

作用

从WWW 服务器传输超文本到本地浏览器的传输协议,使浏览器更加高效,使网络传输减少。

http 请求

GET、POST、HEAD、OPTIONS、PUT、DELETE、TRACE、CONNECT

http 头部

通用头(通用信息),请求头,响应头,实体头(描述实体)

http 连接

实质上是TCP协议的长连接和短连接。
短连接: http1.0 默认使用短连接,即每次请求都要重新发起连接,数据交换结束即关闭连接。
长连接: 从 http1.1 起默认使用长连接,连接建立后不断开,然后再进行数据发送和接收,客户端和服务器之间用于传输数据的 TCP 连接不会关闭,客户端再次访问这个服务器时,会继续使用这一条已经建立的连接。

各版本的区别

http1.0

1、默认使用短连接。
2、使用 If-Modified-Since,Expires来做缓存判断的标准。
3、存在带宽浪费现象,比如客户端仅需要对象的一部分,而服务端则将整个对象送来。

http1.1

1、默认使用长连接。
2、引入更多的缓存判断标准:Etag、If-None-Match等。
3、允许请求资源的某个部分。
4、新增了24个状态码。

http2.0

1、允许多路复用,做到同一个连接并发处理多个请求。
2、支持二进制编码。
3、将相同的首部进行压缩,不重复传输。
4、流量控制,对不同的流的流量进行精确控制。
5、支持服务器端推送(CSS和JS一起发送),不仅只是客户端发起请求,服务端可以自己发送一些数据。

http3.0

1、QUIC (Quick UDP Internet Connections)是基于UDP协议的。
2、解决了 TCP 的队头阻塞问题(某一个流的数据有丢包,则同样会阻塞在它之后传输的流数据传输)。而 http3.0 中不同的流之间真正的实现相互独立传输,互不干扰。
3、在切换网络时的依旧保持连接。

HTTPS

概念

在 http 下加入 SSL/TSL 层,安全基础是 SSL,加密的详细内容需要 SSL。【https的SSL加密是在传输层实现的】

作用

建立一个信息安全通道,确保数据的传输和网站的真实性。

工作原理

https过程

1、客户使用 https url 访问服务器,建立 SSL 连接。
2、服务器接收到请求后,会将包含公钥的证书返回给客户端。
3、客户端和服务端协商 SSL 连接的安全等级,即加密等级。
4、客户端浏览器通过安全等级建立会话密钥(对称加密),通过公钥加密会话密钥并传送给服务端(非对称加密)
5、服务器通过自己的私钥解密出会话密钥,与客户端之间建立通信。

  • 非对称加密:RSA、DSA
  • 对称加密:AES、RC4
  • HASH加密:MD5、SHA1

优点

1、可以认证用户和服务器,确保数据发送正确。
2、比 http 协议安全,确保数据的完整性。
3、现行架构下最安全的解决方案,增加了攻击成本。

缺点

1、https 握手阶段费时,页面加载时间延长。
2、https 缓存不如 http 高效,增加数据开销。
3、SSL 证书消耗成本,功能越强大的证书费用越高。

http 和 https 区别

区别
1、http 未加密,传输内容都是明文;https 则加密传输,安全性更高。
2、https 协议需要ca证书,费用较高。
3、http 的端口为80;https 的端口为443。
4、http 的连接是无状态的(其数据包的发送、传输和接收都是相互独立的);https 的连接是有状态的。

http 状态码

状态码 类别 原因
1xx Information(信息性) 接收的请求正在处理
2xx Success(成功) 请求正常处理完毕
3xx Redirection(重定向) 需要进行附加操作以完成请求
4xx Client Error(客户端错误) 服务器无法处理请求
5xx Server Error(服务端错误) 服务器处理请求出错
状态码 解释
100 服务器收到了请求, 请客户端继续发送
200 请求成功,一般用于 GET 与 POST 请求
201 成功请求并创建了新的资源
202 已经接受请求,但未处理完成
203 非授权信息
204 服务器成功处理,但未返回内容
301 请求的资源已被永久的移动到新URL,返回信息会包括新的URL
302 资源临时被移动,客户端应继续使用原有URL
303 使用GET和POST请求查看其它地址
304 请求已被允许,但文档的内容并没有改变
305 所请求的资源必须通过代理访问
307 使用GET请求重定向
400 请求无效,前端数据与后端不一致
401 当前请求需要用户验证
403 服务器已经得到请求,但是拒绝执行
404 服务器无法根据客户端的请求找到资源(网页)
405 客户端请求中的方法被禁止
408 服务器等待客户端发送的请求时间过长,超时
410 客户端请求的资源已经不存在
413 由于请求的实体过大,服务器无法处理,因此拒绝请求
414 请求的URL过长
415 服务器无法处理请求附带的媒体格式
416 客户端请求的范围无效
500 服务器内部错误,无法完成请求
501 服务器不支持请求的功能,无法完成请求
503 由于超载或系统维护,服务器暂时的无法处理客户端的请求
505 服务器不支持请求的HTTP协议的版本

重定向

什么是重定向?

从一个地址跳转到另一个地址。

什么时候会重定向?

1、网站调整(如改变网页目录结构)
2、网页被移到一个新地址
3、网页扩展名改变

301 和 302

301 是指请求的资源已被永久的移动到新URL,返回信息会包括新的URL;而 302 是指资源临时被移动,客户端应继续使用原有的URL。

为什么尽量使用 301?

因为网址劫持,比如使用 302 跳转时,网址会临时定位到另一个网址,搜索引擎的结果所显示的仍然是网址A,但是所用的网页内容网址B上的内容,这就是网址劫持。而 301 跳转则抛弃了旧网址,永久转移到新的网址。

如何解决 304 问题?

304 是指请求已被允许,但文档的内容并没有改变。出现 304 是因为先在本地缓存了访问的资源
解决: 强制刷新、禁用缓存

参考文章:https://www.jianshu.com/p/995a3000f7d6?isappinstalled=0https://blog.csdn.net/glpghz/article/details/106063833

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

http、https以及状态码超全详解 的相关文章

随机推荐

  • Unity3D碰撞后去掉相互之间的反弹力

    最近做一个小游戏的时候发现 小模型碰撞到墙壁之后会有一个小小的反弹力导致模型有一个微弱的回弹位移 这样给人一种不好的感觉 研究了一下 除了 rigidbody Freeze Rotation之外 在FixedUpdate 注意这里是物理特性
  • mysql 正序_请问mysql 中 怎么实现这种排序,按照状态排序正序,再按照开始时间排序正序,...

    展开全部 有两个思路 1 按照各自的活动状态先排序 插入到临时表 最后再union all所有结32313133353236313431303231363533e58685e5aeb931333363353862果集create tempo
  • calico分配网络使k8s节点指定固定网段

    文章目录 calico分配网络使k8s节点指定固定网段 1 配置calicoctl 1 1 下载calicoctl 1 2 配置calicoctl 1 3 测试calicoctl 2 配置ippool 3 添加ippool 4 创建pod测
  • vue3`

    1 ref是一个函数 响应式数据 使用前要引入 impor ref fro vue let name ref 张三 改变数据 name value 李四 vue3对不同对象处理不同 数据劫持才是响应式的根本 getset 处理对象用prox
  • SpringBoot生成二维码

    目录 Zxing原生方式 添加依赖 二维码生成工具类 添加Controller 添加测试页面 使用postman测试效果 Hutool的方式 添加依赖 创建QRCodeService 添加Controller 效果测试 我们使用两种方式 去
  • mutex_init() / mutex_lock() / mutex_unlock()

    请求 1 初始化互斥体 mutex init 2 获得互斥体 mutex lock 3 释放互斥体 mutex unlock 1 mutex init 注意mutex使用之前都需要先init void mutex init struct m
  • 最小交换次数-华为OD

    整数数组nums 整数k 输出将数组A中小于k的整数组合到一起的最小交换次数 组合在一起是指满足条件的数字相邻 不要求相邻后在数组中的位置 样例1 nums 1 3 1 4 0 k 2 输出 1 解析 交换第一个1和4 样例2 nums 0
  • Django跳坑:objects.all()、objects.get()与objects.filter()之间的区别

    文章目录 1 三者之间的区别 2 获取数据 2 1 取单个数据 3 序列化 3 1 QuerySet序列化 3 2 models序列化 1 三者之间的区别 all返回的是QuerySet对象 程序并没有真的在数据库中执行SQL语句查询数据
  • Github账号开启账号双重验证

    Github账号开启账号双重验证 发现问题 解决步骤 插件使用 发现问题 今天在浏览开源项目的时候 突然Github有个提示我要在10月12日前开启双重验证 说是不完成的话 到时候的Github账号会受到限制 如下图 通过设置也可以找到 解
  • win11设置任务栏不合并的方法教程

    win11系统的任务栏窗口默认设置是合并的 有些小伙伴表示用起来还不太习惯 那么win11任务栏怎么设置不合并呢 下面小编为大家分享下win11设置任务栏不合并的方法 感兴趣的小伙伴一起来看看吧 win11设置任务栏不合并的方法教程 1 我
  • Elasticsearch学习笔记2:ES核心概念 -- 索引、倒排索引、类型、文档

    一 ES和关系型数据库的对比 Elasticsearch Relational DB 索引 index 数据库 database 类型 types 表 tables 文档 documents 行 rows 字段 fields 列 colum
  • OLED透明屏报价:实现高质量展示的成本与选择

    引言 OLED透明屏作为商业展示领域的新兴技术 受到了广泛的关注和需求 然而 对于OLED透明屏的报价 人们常常存在疑虑 在这篇文章中 尼伽将详细解析OLED透明屏报价的构成和选择因素 希望能帮助您更好呢地了解OLED透明屏 一 OLED透
  • vue中textarea高度的设置_vue中textarea自适应高度

    HTML data return pltxt 评论 inputText isHeight true minHeight 0 methods autoTextarea var extra 0 设置光标与输入框保持的距离 默认0 maxHeig
  • SQL操作

    一 查询语句 1 基本查询 SELECT FROM lt 表名 gt 查询表的所有行 SELECT FROM students 2 条件查询 SELECT FROM lt 表名 gt WHERE lt 条件表达式 gt 查询分数在80分以上
  • vscode+phpstudy连接使用mysql(解决phpstudy中mysql无法启动的问题)

    vscode phpstudy连接使用mysql 解决phpstudy中mysql无法启动的问题 使用vscode phpstudy配置php开发环境网上很文章都是挺好的 都成功解决了我的问题 但是对于使用mysql方面始终找不到很系统的文
  • 数据结构系列——先进先出队列queue

    本期主题 先进先出队列实现 目录 1 队列定义 2 实现一个简单的队列以及分析 1 代码实现分析 2 code 3 优缺点分析 3 循环队列实现 1 循环队列原理 2 循环队列实现分析 3 code 1 队列定义 队列是什么 定义 一个先进
  • unity,网格碰撞器(Mesh Collider)

    介绍 网格碰撞器 Mesh Collider 在实现物理碰撞检测时 可以自动检测凸面 但是它并不总是能够准确地生成凸多面体 这是因为在将一个网格模型转换为凸多面体的过程中 可能会出现模型内部空洞或者交叉的情况 这些情况会导致凸多面体的生成失
  • H5页面长按识别二维码

    vue 写的H5 内嵌在小程序上 img src 图片路径 style width 200px height 200px 直接在微信访问长按就可以实现 微信原生直接写长按识别二维码 aaa e let img e target datase
  • 八. springboot 的指标监控 (3、定制 Endpoint )

    3 定制 Endpoint 3 1 定制 Health 信息 import org springframework boot actuate health Health import org springframework boot act
  • http、https以及状态码超全详解

    文章目录 HTTP 概念 作用 http 请求 http 头部 http 连接 各版本的区别 http1 0 http1 1 http2 0 http3 0 HTTPS 概念 作用 工作原理 优点 缺点 http 和 https 区别 ht