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以及状态码超全详解 的相关文章

  • 为什么python请求默认不使用系统ssl证书?

    背景 我正在尝试Ubuntu 18 04 1 LTS 使用 next 安装自签名证书 cp rf my crt usr local share ca certificates update ca certificates 一切正常 因为现在
  • 我首次设置 AWS EB 时创建的默认安全组是什么?

    我对几个组所扮演的角色感到困惑 这些组似乎已自动添加到我的 AWS 安全组列表中 并以我收集的默认配置进行连接 并且想知道它们是如何工作的 以及它们的安全性如何 改变 具体来说 有三个神秘之处 launch wizard 1其中有一条入站规
  • 如何在没有 (L)GPL 库的情况下在 Python 中创建双重身份验证 HTTPS 客户端?

    客户端和服务器都是内部的 各自都有一个由内部CA签名的证书和CA证书 我需要客户端根据服务器拥有的 CA 证书来验证服务器的证书 它还应该将其证书发送到服务器进行身份验证 The urllib2手册说不执行服务器身份验证 PycURL是一个
  • 在 Ubuntu 12.04 上的 Apache 上配置 SVN 服务器

    我正在尝试通过 HTTP 访问现有的 Subversion 服务器 我的dav svn conf文件看起来像
  • Angular4如何使用flatMap链接forkJoin

    我所处的情况是 我需要进行 5 个可以并行执行的 http 调用 在这五个调用之后需要执行另一个 http 调用 我在前 5 个中使用了 forkJoin 但我不知道如何链接 flatMap 或其他函数 forkJoin firstObse
  • 您可以从 AuthorizeAttribute 返回 HTTP 响应而不引发异常吗?

    我在各种控制器上使用 AuthorizeAttribute 可能需要根据请求本身的某些属性返回 403 或 429 请求过多 我完全在自定义 OnAuthorization 实现中实现了它 然后在必要时抛出一个带有适当响应代码的新 Http
  • 如何使用独立的 Jetty 进行服务器推送

    我正在尝试使用独立的 Jetty 在静态网站上测试服务器推送功能 我的网站由一个index html 1个CSS 一堆图像组成 目录结构为 Album index html style css images image 1 png a se
  • 证书中的主机名不匹配:<>!=<> WSO2 APIM

    我有一个 https 端点 我需要从 wso2 API 管理器访问它 使用 1 10 我已经将证书文件添加到 client truststore jks 文件中 但现在它给出了如下错误 hostname in certificate did
  • 在 Flex 中以 HTTP Post 方式上传任意数据

    我们目前有一个 Java 小程序 可以生成大量数据并将其上传到我们的服务器 我们拥有的上传方法之一是使用 HTTP POST 到我们的服务器 其内容只是原始数据 没有多部分编码或任何内容 我正在考虑实现一个具有相同功能的 Flex 应用程序
  • 在处理程序之后访问 HTTP 请求上下文

    在我的日志记录中间件 链中的第一个 中 我需要访问一些在链下游的某些身份验证中间件中编写的上下文 并且仅在处理程序本身执行之后 旁注 需要首先调用日志记录中间件 因为我需要记录请求的持续时间 包括在中间件中花费的时间 此外 当权限不足时 身
  • 在golang中获取TTFB(第一个字节的时间)值

    我正在尝试获取 TTFB 值和 Connect 值 c exec Command curl w Connect time connect TTFB time starttransfer Total time time total o dev
  • 是否可以修改 $_SESSION 变量?

    恶意用户是否可以将 SESSION 在 php 中 变量设置为他想要的任何值 很大程度上取决于您的代码 有一点非常明显 SESSION username REQUEST username
  • HTTP:为什么在 get 请求中发送用户名和密码是错误的?

    一般做法是 当您登录或执行其他需要您的用户名和密码的操作时 您将其发送到发布请求的正文中 此外 为了增加安全性 应使用 https 在 get 请求中 这些参数作为 URL 的一部分发送 但据我了解 在 https 中 正文和标头都是加密的
  • 当会话令牌无效时,我应该使用什么状态代码?

    创建 Web 服务 RESTful 时 当会话令牌无效时我应该使用什么状态代码 目前我公司的人给我发了一个404 未找到 但我认为这是不正确的 因为资源存在 也许我应该使用 401 Unauthorized 你怎么认为 您建议我在这种情况下
  • 使用 Http Post 发送图像

    我想使用 Http Post 将图像从 android 客户端发送到 Django 服务器 该图像是从图库中选择的 目前 我正在使用列表值名称 Pairs 将必要的数据发送到服务器并接收来自 Django 的 JSON 响应 是否可以对图像
  • 使用 Android 发送 HTTP Post 请求

    我一直在尝试从 SO 和其他网站上的大量示例中学习 但我无法弄清楚为什么我编写的示例不起作用 我正在构建一个小型概念验证应用程序 它可以识别语音并将其 文本 作为 POST 请求发送到 node js 服务器 我已确认语音识别有效 并且服务
  • 如何在android中创建nanohttpd服务器?

    其实我也查过一些问题 然后去github上找了一下 但我是新来的 我无法理解这个例子 我想在android中创建http服务器 这样我就可以在PC浏览器中访问它 我有一个类扩展 nanohttpd 的实例 但服务器无法工作 不知道为什么 我
  • 通过 SSL 发布 UTF-8 时,HEROKU 上出现“EOFError:已到达文件结尾”

    我在 heroku 上遇到了奇怪的错误 为了重现它 我必须使用请求正文中的任何 UTF 8 字符制作大的 超过几 KB HTTPS POST 这是一个例子 require net https require uri Accutally I
  • GET 数据是否也在 HTTPS 中加密?

    当你拿到时 https crypted google com search q s https encrypted google com search q s Is the s查询已加密 还是只是回应 如果不是 为什么谷歌还要对其公共内容进
  • 从 R 中的 HTTPS 连接逐行读取

    当创建连接时open r 它允许逐行读取 这对于批量处理大数据流非常有用 例如这个脚本 https gist github com jeroenooms d33a24958d99bb969ac0通过一次读取 100 行来解析相当大的 gzi

随机推荐

  • 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