HTTP响应的基本概念

news2024/9/20 20:50:17

目录

HTTP响应中的一些信息

HTTPS


HTTP响应中的一些信息

状态码:描述了这次HTTP请求是否成功,以及失败的原因。

1)200   ---OK

表示这次访问成功了。

2)404   ---Not Found 

表示客户端请求的资源在服务器这边不存在。

3)403   ---Forbidden

表示客户端的权限不足,被禁止访问了。

4)405    ---Method Not Allowed

表示请求中的方法,服务器不支持。当请求方发送请求(GET/POST方法),服务器的代码逻辑就需要处理上述请求,假如服务器没有实现对应的逻辑。比如只实现了处理GET,没实现处理POST,此时你发送POST,就可能得到405。

5)500   ---Internal Server Error

表示服务器内部错误。代码里出现bug。

6)504   ---Gateway Timeout

表示服务器访问超时了。这种问题常出现于“服务器比较繁忙的情况”。

7)302   ---Move temporarily

临时重定向。访问某个地址的时候,访问的是旧地址,自动跳转到新的地址上。

响应报文报头(header)中包含Location,表示接下来要跳转到哪个地址上。

8)301    ---Moved Permanently

访问的旧地址和新地址之间的映射关系,固定了。此时浏览器就会缓存这样的结果。后续再次访问旧地址的时候,浏览器旧可以直接构造新地址的请求,就减少一次http访问了。

如果使用302作为重定向,临时重定向,旧地址是否要重定向,以及重定向到哪里,就是可变的。因此每次访问旧地址,都需要使用旧地址访问服务器,获取到响应的Location属性再进行跳转。

HTTPS

HTTPS本质上就是HTTP的基础上增加了一个加密层。  S  =>SSL(安全相关的协议)

HTTPS = HTTP + SSL

明文:要传输的真正的意思是啥。

密文:加密之后得到的数据。

密钥:用来加密和解密的道具/数据。

把明文通过密钥变成密文  => 加密

把密文通过密钥变成明文  => 解密

对称加密:加密和解密,使用同一个密钥。加密解密速度比较快。

非对称加密:密钥是一对(分别称为公钥和私钥),加密解密速度比较慢,安全性更高。可以使用公钥加密,私钥解密。或者可以使用私钥加密,公钥解密。

HTTPS使用对称加密。

注:当有多个客户端的时候,不同客户端的密钥是不同的。

如何把密钥传给对方呢?如果明文传输,又会被黑客获取到。

需要给密钥进行加密。(无法使用对称加密的方式,对密钥加密)

此时就需要通过非对称加密的方式,针对对称密钥来进行加密。(非对称加密不是针对后续传输的数据内容展开的,而是只针对对称密钥来进行)

服务器生成 => 公钥 和 私钥

当客户端连上服务器的时候,服务器就会把自己的公钥,告诉给客户端(私钥还是自己来持有的)。公钥是会告诉所有的客户端(所有的客户端都是同一个公钥),私钥的话是自己留好不会告诉任何人。

接下来客户端生成密钥。(每个客户端生成自己的,客户端之间不知道别人的对称密钥是啥)

通过服务器拿到的公钥,针对对称密钥,进行加密。再把对称密钥的密文,传输给服务器。

中间人攻击问题:黑客可以冒充自己是服务器。黑客面对客户端的时候,扮演服务器的角色。面对服务器的时候,扮演客户端的角色。

如何解决中间人攻击

最关键的切入点,就是让客户端能够区分出当前的公钥是不是服务器自己的公钥,是不是被伪造出来的公钥。

此处需引入第三方公证机构。公证机构会对公钥进行“公证”,此时客户端看到了这个公钥被公证了,就可以认为这是合法的了。公证机构,生成一对非对称密钥pub(公证),pri(公证),拿着pri(公证)针对证书数据的校验和进行加密,得到了数字签名。

服务器上线自己的网站的时候,要先去第三方公证机构申请一个“证书”。

数字签名:加密后的校验和。基于CRC/MD5等方式,把原始数据每个字节都带入,计算一遍,最终得到的一串数。数字签名就是针对这个校验和,再来一次加密,基于非对称加密的方式来进行的加密。

客户端收到证书,就会对证书的合法性进行校验。

1)针对证书这些字段,计算校验和。

2)针对数字签名进行解密

数字签名是基于公正机构的私钥来加密的。就需要拿着公证机构的公钥来解密。

注:获取公证机构的公钥,不是通过“网络”的方式获取到的。通过网络的方式,就可能会得到黑客伪造的公钥。

而是操作系统会内置公证机构的公钥

公证机构一共没多少,一个操作系统就可以在发布的时候,把市面上的公证机构的公钥都打包放在一起。随着安装操作系统,公钥就有了。

接下来,就可以使用公证机构的公钥(系统内置),来对数字签名进行解密了。解密之后得到校验和2.

3)客户端来比较 校验和1 == 校验和2

相等就说明整个证书都是没有被篡改过的,证书中包含的公钥就是可信的服务器公钥了。

以上,关于HTTPS,希望对你有所帮助。

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

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

相关文章

93.网络游戏逆向分析与漏洞攻防-游戏技能系统分析-增强技能信息显示后进行分析

免责声明:内容仅供学习参考,请合法利用知识,禁止进行违法犯罪活动! 如果看不懂、不知道现在做的什么,那就跟着做完看效果,代码看不懂是正常的,只要会抄就行,抄着抄着就能懂了 内容…

Pytorch深度学习实践笔记3

🎬个人简介:一个全栈工程师的升级之路! 📋个人专栏:pytorch深度学习 🎀CSDN主页 发狂的小花 🌄人生秘诀:学习的本质就是极致重复! 视频来自【b站刘二大人】 目录 1 梯度下降&#…

html简述——part1

HTML概述 HTML(HyperText Markup Language)是一种用于创建网页的标准标记语言,具体指超文本标记语言。它不是一种编程语言,而是一种标记语言,用于描述网页的结构和内容。通过HTML,开发者可以定义网页的标题…

【算法】递归、搜索与回溯——简介

简介:递归、搜索与回溯,本节博客主要是简单记录一下关于“递归、搜索与回溯”的相关简单概念,为后续算法做铺垫。 目录 1.递归1.1递归概念2.2递归意义2.3学习递归2.4写递归代码步骤 2.搜索3.回溯与剪枝 递归、搜索、回溯的关系: …

广告圈策划大师课:活动策划到品牌企划的深度解析

对于刚接触营销策划的新人来说,在这个知识密集型行业里生存,要学习非常多各种意思相近的概念,常常让人感到头疼,难以区分。 这里对这些策划概念进行深入解析,帮助您轻松理清各自的含义和区别。 1. 活动策划&#xff…

CCF20230901——坐标变换(其一)

CCF20230901——坐标变换&#xff08;其一&#xff09; #include<bits/stdc.h> using namespace std; int main() {int n,m,x[101],y[101],x1[101],y1[101];cin>>n>>m;for(int i0;i<n;i)cin>>x1[i]>>y1[i];for(int j0;j<m;j)cin>>x[…

PD协议:引领电子设备充电新时代

随着科技的飞速发展&#xff0c;电子设备已成为我们日常生活中不可或缺的一部分。然而&#xff0c;这些设备的充电问题一直困扰着广大用户。传统的充电方式不仅效率低下&#xff0c;而且存在着安全隐患。为了解决这一问题&#xff0c;USB Implementers Forum&#xff08;USB-IF…

IPv6 地址创建 EUI-64 格式接口 ID 的过程

IPv6 接口标识符 IPv6 地址中的接口标识符&#xff08;ID&#xff09;用于识别链路上的唯一接口&#xff0c;有时被称为 IPv6 地址的 “主机部分”。接口 ID 在链路上必须是唯一的&#xff0c;始终为 64 位长&#xff0c;并且可以根据数据链路层地址动态创建。 MAC 地址 中的…

【C++项目】实时聊天的在线匹配五子棋对战游戏

目录 项目介绍 开发环境 核心技术 项目前置知识点介绍 Websocketpp 1. WebSocket基本认识 2. WebSocket协议切换原理解析 3. WebSocket报文格式 4. Websocketpp介绍 5. 搭建一个简单WebSocket服务器 JsonCpp 1. Json格式的基本认识 2. JsonCpp介绍 3. 序列化与反序…

在ubuntu中关于驱动得问题:如何将nouveau驱动程序加入黑名单和安装NVIDIA显卡驱动

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 一、nouveau驱动程序加入黑名单二、安装NVIDIA显卡驱动 一、nouveau驱动程序加入黑名单 (1) 打开黑名单列表文件 终端输入&#xff1a; sudo gedit /etc/modprobe…

CCF20230501——重复局面

CCF20230501——重复局面 代码如下&#xff1a; #include<bits/stdc.h> using namespace std; int main() {int n;cin>>n;char a[101][64];int i,j;for(i0;i<n;i){for(j0;j<64;j){cin>>a[i][j];}}int temp0,flag1;for(i0;i<n;i){flag1;for(j0;j<…

Linux程序开发(十二):线程与多线程同步互斥实现抢票系统

Tips&#xff1a;"分享是快乐的源泉&#x1f4a7;&#xff0c;在我的博客里&#xff0c;不仅有知识的海洋&#x1f30a;&#xff0c;还有满满的正能量加持&#x1f4aa;&#xff0c;快来和我一起分享这份快乐吧&#x1f60a;&#xff01; 喜欢我的博客的话&#xff0c;记得…

Mongodb分布式id

1、分布式id使用场景 分布式ID是指在分布式系统中用于唯一标识每个元素的数字或字符串。在分布式系统中&#xff0c;各个节点或服务可能独立运行在不同的服务器、数据中心或地理位置&#xff0c;因此需要一种机制来确保每个生成的ID都是全局唯一的&#xff0c;以避免ID冲突。 …

Pytorch线性模型(Linear Model)

基本步骤 ①首先准备好数据集&#xff08;DataSet&#xff09; ②模型的选择或者设计&#xff08;Model&#xff09; ③进行训练&#xff08;Train&#xff09;大部分模型都需要训练&#xff0c;有些不需要。这一步后我们会确定不同特征的权重 ④推理&#xff08;inferring…

就业班 第三阶段(ELK) 2401--5.20 day1 ELK 企业实战 ES+head+kibana+logstash部署(最大集群)

ELKkafkafilebeat企业内部日志分析系统 1、组件介绍 1、Elasticsearch&#xff1a; 是一个基于Lucene的搜索服务器。提供搜集、分析、存储数据三大功能。它提供了一个分布式多用户能力的全文搜索引擎&#xff0c;基于RESTful web接口。Elasticsearch是用Java开发的&#xff…

学习单向链表带哨兵demo

一、定义 在计算机科学中&#xff0c;链表是数据元素的线性集合&#xff0c;其每个元素都指向下一个元素&#xff0c;元素存储上并不连续。 1.可以分三类为 单向链表&#xff0c;每个元素只知道其下一个元素是谁 双向链表&#xff0c;每个元素知道其上一个元素和下一个元素 …

mySql从入门到入土

基础篇 在cmd中使用MYSQL的相关指令&#xff1a; net start mysql // 启动mysql服务 net stop mysql // 停止mysql服务 mysql -uroot -p1234//登录MYSQL&#xff08;-u为用户名-p为密码&#xff09; //登录参数 mysql -u用户名 -p密码 -h要连接的mysql服务器的ip地址(默认1…

记一次安卓“Low on memory“崩溃问题

前言 最近再调人脸识别算法相关demo,发现调试期间总是偶发性崩溃&#xff0c;捕获不到异常的那种&#xff0c;看日志发现原因是Low on memory&#xff0c;一开始还疑惑 App内存不够应该是OOM啊,怎么会出现这种问题&#xff0c;百思不得其解&#xff0c;直到我打开了 Android s…

Git 仓库中 -- 代码冲突产生、定位、解决的流程

目录 前置知识1 工具环境2 冲突的产生2.1 仓库中的源代码2.2 人员 A 首先更改代码2.3 人员 B 更改代码&#xff0c;产生冲突2.3.1 第一次错误提示&#xff1a;2.3.2 第二次错误提示&#xff1a; 3 查看冲突4 手动解决冲突4.1 方式一4.2 方式二&#xff08;tortoisegit&#xff…

Vitis HLS 学习笔记--控制驱动任务示例

目录 1. 简介 2. 代码解析 2.1 kernel 代码回顾 2.2 功能分析 2.3 查看综合报告 2.4 查看 Schedule Viewer 2.5 查看 Dataflow Viewer 3. Vitis IDE的关键设置 3.1 加载数据文件 3.2 设置 Flow Target 3.3 配置 fifo 深度 4. 总结 1. 简介 本文对《Vitis HLS 学习…