HTTP与HTTTPS的区别

目录

一、HTTP和HTTTPS的概念

HTTP(Hypertext Transfer Protocol):

HTTPS(Hypertext Transfer Protocol Secure):

二、HTTP 的 get 请求和 post 请求的区别?

三、HTTPS 的工作原理:

握手阶段(Handshake):

密钥交换阶段(Key Exchange):

数据传输阶段(Data Transfer):

四、HTTP的状态码

我其他的博客博客


一、HTTP和HTTTPS的概念

HTTP(Hypertext Transfer Protocol):

HTTP是一种用于在Web浏览器和Web服务器之间传输数据的协议。它是一种无状态的协议,即每个请求和响应之间是相互独立的,服务器不会保留先前请求的任何信息。HTTP是基于客户端-服务器模型的协议,客户端发出请求,服务器回送响应。

主要特点:

  1. 明文传输: HTTP传输的数据是明文的,不进行加密处理,因此容易被中间人截取和窃听。

  2. 不具备安全性: 由于明文传输的特性,HTTP在处理敏感信息时存在安全风险。

  3. 默认端口: HTTP默认使用端口80。

  4. URL前缀: URL以 "http://" 开头。

HTTPS(Hypertext Transfer Protocol Secure):

HTTPS是HTTP的安全版本,通过在HTTP上加入SSL/TLS协议,实现了对数据的加密和身份认证。HTTPS在数据传输的过程中提供了更高的安全性,适用于传输敏感信息的场景,如用户登录、支付等。

主要特点:

  1. 加密传输: HTTPS通过使用SSL/TLS协议对传输的数据进行加密,保障了数据的机密性和完整性。

  2. 身份认证: 使用SSL/TLS证书对服务器进行身份验证,确保用户连接到的是真实的服务器,而非中间人攻击。

  3. 默认端口: HTTPS默认使用端口443。

  4. URL前缀: URL以 "https://" 开头。

  5. 证书要求: 使用SSL/TLS证书,由权威的证书颁发机构签发。

  6. 安全性提高: 由于数据加密和身份认证的存在,HTTPS在保障用户隐私和信息安全方面明显优于HTTP。

二、HTTP 的 get 请求和 post 请求的区别?

GET请求:

  1. 传递数据: 通过URL参数传递数据,将数据附加在URL的后面,以?分隔URL和参数,参数之间使用&连接。例如:http://example.com/resource?name=value&age=25

  2. 请求方式: GET请求是一种幂等的请求,意味着对同一URL的多个连续GET请求的结果应该是相同的,不会对服务器上的资源产生影响。

  3. 数据大小限制: 由于数据是附加在URL上的,GET请求对传输的数据大小有限制,一般在几 KB 到几 MB 之间,具体限制取决于浏览器和服务器的配置。

  4. 安全性: 相对于POST请求,GET请求的安全性较低。因为参数附加在URL上,敏感信息可能会被浏览器记录在浏览器历史、服务器日志等地方。

  5. 可见性: 由于参数在URL上可见,因此不适合传输敏感信息。

POST请求:

  1. 传递数据: POST请求通过请求体传递数据,数据不会附加在URL上,而是通过请求体进行传输。数据可以是表单字段、JSON等形式。

  2. 请求方式: POST请求不是幂等的,即对同一URL的多个连续POST请求的结果可能会不同,POST请求通常用于对服务器资源的修改操作。

  3. 数据大小限制: POST请求对传输的数据大小没有特定限制,可以传输较大的数据。

  4. 安全性: 相对于GET请求,POST请求的安全性更高。因为数据不可见于URL,不容易被截取和篡改。适用于传输敏感信息。

  5. 可见性: POST请求的数据不可见于URL,因此更适合传输一些敏感信息。

三、HTTPS 的工作原理

HTTPS(Hypertext Transfer Protocol Secure)是在HTTP的基础上添加了安全性特性的协议。它通过使用SSL(Secure Sockets Layer)或其继任者TLS(Transport Layer Security)来加密在网络上传输的数据,保障数据的机密性和完整性。以下是HTTPS的工作原理:

  1. 握手阶段(Handshake):

    • 客户端Hello: 客户端发送一个ClientHello消息,其中包含支持的SSL/TLS版本、加密算法、压缩算法等信息。

    • 服务端Hello: 服务端在收到ClientHello后,从中选择一个SSL/TLS版本和加密算法,并向客户端发送ServerHello消息,同时也发送自己的数字证书。

    • 认证: 客户端收到服务端的数字证书后,会验证证书的合法性,包括是否过期、是否由可信任的证书颁发机构签发等。如果验证通过,客户端生成一个随机的对称密钥,称为Pre-Master Secret。

    • 密钥交换: 客户端使用服务端的公钥加密Pre-Master Secret,并将其发送给服务端。服务端收到后使用自己的私钥解密,得到Pre-Master Secret。

    • 生成会话密钥: 客户端和服务端使用两者各自的私钥和Pre-Master Secret通过特定算法生成会话密钥,用于后续数据的加解密。

  2. 密钥交换阶段(Key Exchange):

    • 会话密钥: 客户端和服务端都拥有了相同的会话密钥,用于对称加密算法,确保通信的机密性。

    • Finished消息: 客户端和服务端都发送一个Finished消息,其中包含之前握手阶段的所有消息的摘要,用于相互验证握手的完整性。

  3. 数据传输阶段(Data Transfer):

    • 对称加密: 握手阶段完成后,客户端和服务端使用协商得到的会话密钥进行对称加密,确保数据在传输过程中的机密性。

    • 数据完整性: 使用消息认证码(MAC)等机制确保数据在传输过程中的完整性,防止被篡改。

    • HTTPS连接建立: 握手成功后,客户端和服务端之间建立了一个安全的HTTPS连接,后续的数据传输都在这个安全的连接上进行。

四、HTTP的状态码

HTTP状态码是由服务器返回的三位数字,用于表示对HTTP请求的处理结果。状态码分为五个类别,每个类别具有特定的意义。以下是常见的HTTP状态码:

  1. 1xx(Informational): 请求正在进行中,服务器需要进一步的操作。

    • 100 Continue: 表示服务器已经收到了请求的头部,并且客户端应该继续发送请求的其余部分。

    • 101 Switching Protocols: 表示服务器已经理解客户端的请求,将通过Upgrade消息头通知客户端切换协议。

  2. 2xx(Success): 请求已成功接收、理解并接受。

    • 200 OK: 表示请求成功,正常返回。

    • 201 Created: 表示请求已经被成功处理,并且服务器创建了新的资源。

    • 204 No Content: 表示服务器成功处理了请求,但不需要返回任何实体内容。

    • 206 Partial Content: 表示服务器已经成功处理了部分GET请求。

  3. 3xx(Redirection): 需要进行附加操作以完成请求。

    • 301 Moved Permanently: 表示请求的资源已被永久移动到新的位置。

    • 302 Found: 表示请求的资源临时被移动到新的位置。

    • 304 Not Modified: 表示客户端发送附带条件的请求,服务器已经验证了条件,资源未被修改。

  4. 4xx(Client Error): 客户端错误,服务器无法处理请求。

    • 400 Bad Request: 表示服务器无法理解客户端的请求,语法错误。

    • 401 Unauthorized: 表示请求需要身份验证。

    • 403 Forbidden: 表示服务器已经理解请求,但是拒绝执行它。

    • 404 Not Found: 表示服务器找不到请求的资源。

    • 405 Method Not Allowed: 表示请求中的方法被禁止。

    • 408 Request Timeout: 表示客户端请求超时。

  5. 5xx(Server Error): 服务器错误,服务器无法完成明显有效的请求。

    • 500 Internal Server Error: 表示服务器遇到了一个未知的错误。

    • 502 Bad Gateway: 表示服务器作为网关或代理,从上游服务器收到无效响应。

    • 503 Service Unavailable: 表示服务器当前无法处理请求,通常是临时性的。

    • 504 Gateway Timeout: 表示服务器作为网关或代理,未及时从上游服务器接收请求。

我其他的博客博客

什么情况下会产生StackOverflowError(栈溢出)和OutOfMemoryError(堆溢出)怎么排查-CSDN博客

 谈谈我对HashMap扩容机制的理解及底层实现-CSDN博客

堆排序详细讲解(一文足矣JAVA)-CSDN博客

怎么防止死锁-CSDN博客

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

07.CSS常用样式

CSS常用样式 1.颜色样式 颜色名 介绍 直接使用颜色对应的英文单词,编写比较简单 具体颜色名参考 MDN 官方文档 例子 p {color:red; }缺点 颜色名这种方式,表达的颜色比较单一,所以用的并不多 rgb或rgba 介绍 使用 红、黄、蓝 这三…

Java版企业电子招标采购系统源码Spring Cloud + Spring Boot +二次开发+ MybatisPlus + Redis

功能描述 1、门户管理:所有用户可在门户页面查看所有的公告信息及相关的通知信息。主要板块包含:招标公告、非招标公告、系统通知、政策法规。 2、立项管理:企业用户可对需要采购的项目进行立项申请,并提交审批,查看所…

水闸水雨情监测设施建设项目

功能设计 在水闸上、下游挡墙外侧各安装1套雷达水位计,水闸屋顶布置个雨量计,水位及雨量监测数据的采集与传输主要是实时的完成水位、雨量数据的采集与处理,并按照设定的工作方式、时间间隔、增量范围将数据上传至扬压力监测站边缘计算终端&…

EasyExcel实现⭐️本地excel数据解析并保存到数据库的脚本编写,附案例实现

目录 前言 一、 EasyExcel 简介 二、实战分析 1.Controller控制层 2. service方法和方法实现 3.EasyExcel相关类 3.1 excel表实体类 3.2 自定义监听器类 4.测试 4.1 准备工作 4.2 断点调试 5.生成脚本文件 三、分析总结 章末 小伙伴们大家好,最近开发的时…

微服务最佳实践:构建可扩展且高效的系统

微服务架构彻底改变了现代软件开发,提供了无与伦比的敏捷性、可扩展性和可维护性。然而,有效实施微服务需要深入了解最佳实践,以充分发挥微服务的潜力,同时避免常见的陷阱。在这份综合指南中,我们将深入研究微服务的关…

getchar的功能和用法

getchar()是C语言中的一个标准库函数,用于从标准输入(通常是键盘)读取一个字符,并将其作为int类型返回。它通常用于从键盘获取用户输入。 getchar()函数在程序中等待用户输入,当用户输入一个字符并按下回车键后&#…

【抄作业】ubuntu完全卸载CUDA,彻底卸载cuda,卸载不同版本的cuda,cuda不同版本的卸载方法

卸载的实现方法 如何正确、完全的卸载cuda呢? 其实cuda安装时就已经准备好了卸载的接口,卸载程序在/usr/local/cuda-xx.x/bin下,需要注意的是cuda10.0及之前的版本卸载程序名为uninstall_cuda_xx.x.pl,而cuda10.1及之后的版本卸…

【玩转 TableAgent数据智能分析】-数据分析师的大模型

【玩转 TableAgent数据智能分析】-数据分析师的大模型 九章云极DataCanvas介绍TableAgent的新手入门指南:官网首页立刻体验问题测试问题1:问题2:问题3:问题4:问题5: 通用大模型对比分析对csv数据集的支持比…

【游戏篇】Scratch之小猴子接水果

【作品展示】小猴子接水果 操作:点击小绿旗,按下键盘左右键控制小猴子移动拿到水果,同时也要躲避炸弹。

Windows汇编调用printf

VS2022 汇编 项目右键 生成依赖项 生成自定义 勾选masm 链接器 高级 入口点 main X86 .686 .model flat,stdcall option casemap:none includelib ucrt.lib includelib legacy_stdio_definitions.libEXTERN printf:proc.data szFormat db %s,0 szStr db hello,0.code main…

Python Socket编程

Python Socket编程 文章目录 Python Socket编程1. 弄懂HTTP、Socket、TCP这几个概念五层网络模型 2. client和server实现通信Socket编程模式指南代码实现 3. socket实现聊天和多用户连接4. socket模拟http请求 1. 弄懂HTTP、Socket、TCP这几个概念 整个计算机网络都是有协议组…

leetcode算法题:省份数量

leetcode算法题547 链接:https://leetcode.cn/problems/number-of-provinces 题目 有 n 个城市,其中一些彼此相连,另一些没有相连。如果城市 a 与城市 b 直接相连,且城市 b 与城市 c 直接相连,那么城市 a 与城市 c 间…

c#按照时间进行数据存储(不用数据库)

概要介绍 按照日期生成文件夹,按照时间生成文件名,存储字符串。 可以用于简单数据记录(如果数据存储考虑格式文本,保存为csv格式) 实现效果 调用方法 SaveText.saveStr("测试字符串"DateTime.Now.ToStrin…

6.3 C++11 原子操作与原子类型

一、原子类型 1.多线程下的问题 在C中&#xff0c;一个全局数据在多个线程中被同时使用时&#xff0c;如果不加任何处理&#xff0c;则会出现数据同步的问题。 #include <iostream> #include <thread> #include <chrono> long val 0;void test() {for (i…

C语言算法~BF算法和KMP算法

各位CSDN的各位你们好啊&#xff0c;今天小赵要给大家分享一个算法方面的知识这个算法也是小赵琢磨了好久&#xff0c;才算把它理明白&#xff0c;今天小赵就用一篇博客带你理明白这个算法——KMP算法。当然再介绍这个算法前&#xff0c;小赵还会介绍一个BF算法和一个函数&…

对多个 App 设计工具组件使用一个回调

当要在App 中提供多种方法来执行某个操作时&#xff0c;在组件间共享回调非常有用。例如&#xff0c;当用户点击按钮或在编辑字段中按下 Enter 键时&#xff0c;App 可以用同样的方式响应。 共享回调的示例 此示例说明如何创建一个 App&#xff0c;其中包含共享一个回调的两个…

数字孪生博物馆解决方案

数字孪生技术在博物馆领域的应用&#xff0c;可以为博物馆提供更丰富的数字化体验&#xff0c;促进文物的保护、展示和教育。以下是数字孪生博物馆解决方案的一些关键组成部分&#xff0c;希望对大家有所帮助。北京木奇移动技术有限公司&#xff0c;专业的软件外包开发公司&…

vue echart实现横向柱状图颜色渐变、标签右对齐

需求&#xff1a;用echart实现柱状图的横向展示&#xff0c;对指定数据的柱状图进行颜色区分&#xff0c;且对应标签值展示在柱状图右侧&#xff0c;实现文字的右对齐。 主要问题点&#xff1a; 1、柱状图的颜色渐变 通过colorStops设置color渐变的起止颜色&#xff0c; color…

在Linux上安装配置Nginx高性能Web服务器

1 前言 Nginx是一个高性能的开源Web服务器&#xff0c;同时也可以作为反向代理服务器、负载均衡器、HTTP缓存以及作为一个邮件代理服务器。它以其出色的性能和灵活性而闻名&#xff0c;被广泛用于处理高流量的网站和应用程序。本文将介绍在Linux环境中安装Nginx的步骤&#xf…

josef约瑟 静态电压继电器 HWY-41B 19-240V 导轨式安装

HWY-40系列无辅源静态电压继电器 HWY-41A无辅源静态电压继电器 HWY-42A无辅源静态电压继电器 HWY-43A无辅源静态电压继电器 HWY-44A无辅源静态电压继电器 HWY-45A无辅源静态电压继电器 HWY-41B无辅源静态电压继电器 HWY-42B无辅源静态电压继电器 HWY-43B无辅源静态电压继电器 …