HTTP和HTTPS

目录

HTTP协议

1.HTTP协议

2.HTTP请求

URL

方法

GET请求

post请求

header报头

请求正文(body)

3.HTTP响应

结构

常见的状态码

4.form表单构造HTTP请求

5.通过ajax构造HTTP请求

6.使用工具postman

​编辑

HTTPS

1.对称加密

2.非对称加密

3.证书


HTTP协议

1.HTTP协议

HTTP属于应用层最广泛使用的协议之一。浏览器获取到网页就是基于HTTP。HTTP就是浏览器和服务器之间的交互桥梁。

网址,URL,浏览器会根据这个URL构造出一个HTTP请求,发送给服务器,服务器会返回一个HTTP响应(包含了HTML,CSS,js,图片...)浏览器再把得到的HTML等数据进行显示出来(渲染)

可以通过fiddler工具查看HTTP的工作过程

下载:

fidder本质是一个代理程序(代理:找中间人帮助做任务),使用时有两个注意事项。

1.可能和别的代理程序冲突,使用的时候要关闭其他的代理程序(包括一些浏览器插件)

2.想要正确抓包,还需要开启https功能,https是基于http的进化版协议。fiddler默认不能抓https的包,需要自己启用https并安装证书。

打开搜狗,查看抓包

2.HTTP请求

最原始的请求:

响应:

URL

举个例子:

方法

常用的几个方法:

GET请求

1.在浏览器地址栏直接输入URL就会触发get请求

2.HTML里的link标签、script标签、img、a标签......

3.通过js构造get请求

通过fiddler查看搜狗页面请求

post请求

1.登录跳转

2.传输文件

HTTP请求可以认为是四个部分:

1.首行

2.请求头(header)

3.空行

4.正文(body)

GET请求,没有body;POST请求,一般有body。(post的body是程序员自定义的内容)

GET和POST之间的区别:

1.get给服务器传递的信息一般放在query string里面,post传递则是通过body

2.get请求一般用于从服务器获取数据,post一般是用于给服务器提交数据

3.get通常设计为幂等的,post不要求幂等

4.get可以被缓存,post一般不能被缓存

header报头

每一行是一个键值对,键和值之间使用:分割

键值对是HTTP定义好的,有特定的含义

常见的几个重要的键值对:

Host:描述服务器所在的地址和端口(描述最终要访问的目标)

content-length:描述body中的数据长度

content-type:描述body中的数据格式

user-agent:当前操作系统和浏览器的版本,现在主要用来区分PC和移动

referer:当前页面的来源

cookie:浏览器给网页提供的本地存储数据的机制(网页默认是不允许访问计算机硬盘的)

请求正文(body)

3.HTTP响应

结构

响应是四个部分构成的

1)首行:版本号 状态码 状态码的描述

2)header

3)空行:表示header的结束标记

4)body

HTTP状态码:描述了这次响应的结果(响应成功还是失败,失败原因)

常见的状态码

200 OK (成功了)

404 Not Found(访问资源不存在,在服务器里没有找到)

403 Forbidden(访问被拒绝,没有权限)

302 Move temporarliy(重定向,类似于呼叫转移)

500 internal sever error:服务器内部错误,代码抛出异常

504 gateway timeout :响应时间太久,请求超时

状态码大类:(看开头数字)

1** 执行中,等一等

2** 成功

3** 重定向

4**客户端错误

5**服务器错误

HTTP协议格式总结

4.form表单构造HTTP请求

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title>
</head>
<body><!-- 表单标签,允许用户和服务器之间交互数据 --><!-- 要求提交的数据以键值对的结构来组织 --><form action="https://www.sogou.com" method="get"><input type="text" name="studentName"><!-- 构造了一个按钮,点击按钮提交form表单 --><input type="submit" value="提交"></form>
</body>
</html>

搜狗服务器没有特殊响应,只是打开了搜狗服务页。

代码里方法换成post:

form标签只能构造get和post,无法构造put、delete等方法的请求。

5.通过ajax构造HTTP请求

a=>异步的

asynchronize

HTML中通过ajax发起的HTTP请求,就属于异步的方式。即发送请求后不必等待服务器响应回来,可以往下执行。当服务器响应回来了之后,再由浏览器通知到代码中。

jquery提供的ajax,api针对原生api封装

应用jquery库,通过$全局对象来获取它的aqi

和form相比:ajax功能更强大

1.支持put、delete等方法

2.ajax发送的请求可以灵活设置header

3.ajax发送的请求的body也是可以灵活设置的

6.使用工具postman

1.注册登录 2.创建workplace 3.新建一个标签页,即可以构造请求

构造一个HTTP请求:通过postman手动构造

postman还可以自己构造出请求代码:

HTTPS

HTTP+安全层(SSL)

用来加密的协议:SSL/TLS

可以用来防御“运营商劫持”(例:点击下载链接后跳转到另一个下载链接中)

网络上明文传输数据比较危险,需要加密才能保证安全。

1.对称加密

a(明文)+key=>b(密文) 加密的过程

b(密文)+key=>a(明文)    解密的过程

key:同一个密钥,既可以加密也可以用来解密(对称密钥)

密钥:一串字符串/数字。加密的过程,就是把明文和字符串进行数学变换。

存在问题:初始客户端设置密码给服务器时需要明文传输。此时黑客也能看见密码。此时引出非对称加密。

2.非对称加密

生成一对密钥:公钥和私钥(公钥和私钥的加密或者解密顺序可以互换)

明文+公钥=>密文   使用公钥加密

密文+私钥=>明文   使用私钥解密

类比信箱:锁在邮差员手中,钥匙在居住人手中。邮差上锁,用户用钥匙解锁。

客户端使用公钥,来对密钥进行加密,传输给服务器,服务器用私钥来解密得到对称密钥。

非对称密钥只是为了传递对称密钥的。一旦对称密钥到达服务器后,后续的传输都使用对称密钥来加密了。对称密钥的效率相较于非对称密钥要高许多。 

即使使用了非对称密钥,也会出现问题:黑客进行中间人攻击,传输过程中截获替换成自己生成的一对非对称密钥,截获传输的信息。

问题出现在服务器不知道传输的数据是否来自于客户端,解决中间人攻击的关键在于让客户端能辨别公钥是否是真的公钥。

3.证书

引入“证书”(第三方的公证机构)

类比:参加高考需要身份证和准考证来证明身份,证书无效机器会识别出来,对造假和代考做出惩罚。

服务器在成立初就会在专门的机构认证审核,申请证书,审核通过颁发证书,服务器生成的公钥包含在证书中。传输过程发现证书无效,浏览器出现弹窗告警。

验证证书是否被篡改:从系统中拿到该证书发布机构的公钥,对签名解锁,得到一个hash1,再计算整个证书的hash值记作hash2,比较hash1和hash2的值,如果不一样则被篡改了。证书一旦有一个字符被修改过,计算出来的hash值会有非常大的差别。一旦hash值对不上,客户端就知道被替换了公钥。

总结客户端和服务器之间使用HTTPS传输数据的过程

1.针对业务数据,引入对称加密。

2.让服务器生成一对非对称密钥,公钥1和私钥1,把公钥1连同证书一起发送给客户端,自己持有私钥1。

3.客户端拿到证书进行校验,拿着颁发证书机构提供的公钥2对证书中的签名进行解密,计算校验和是否匹配。

4.客户端拿着服务器发送来的公钥1争对对称密钥进行加密,发送给服务器,服务器用私钥1进行解密。

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

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

相关文章

填充颜色游戏

无语死了这题。 题目描述 小明最近迷上下面一款游戏。游戏开始时&#xff0c; 系统将随机生成一个 N N 的 正方形棋盘&#xff0c; 棋盘的每个格子都由六种颜色中的一种绘制。在每个步骤中&#xff0c; 玩家选择一种颜色&#xff0c; 并将与左上角连接的所有网格更改为该特…

jenkins 安装与使用、用户权限划分

jenkins 安装与使用 安装插件&#xff1a; 开启该插件功能 验证用户管理 创建web01~02 使用web01登录 用户权限划分 安装 Role-Based Strategy 插件后&#xff0c;系统管理 中多了如图下所示的一个功能&#xff0c;用户权限的划分就是靠他来做的 创建角色 重新访问 创建项目…

Zabbix“专家坐诊”第207期问答汇总

问题一 Q&#xff1a;不小心把host表删除了&#xff0c;怎么处理&#xff1f;现在使用的zabbix 4.0.3的server&#xff0c;agent是4.2.1&#xff0c;能不能不动agent的情况下升级server版本&#xff0c;重新部署&#xff1f; A&#xff1a;数据库有备份话恢复即可&#xff0c;…

SSTI模板注入(flask) 学习总结

文章目录 Flask-jinja2 SSTI 一般利用姿势SSTI 中常用的魔术方法内建函数 利用 SSTI 读取文件Python 2Python 3 利用 SSTI 执行命令寻找内建函数 eval 执行命令寻找 os 模块执行命令寻找 popen 函数执行命令寻找 importlib 类执行命令寻找 linecache 函数执行命令寻找 subproce…

windows中elasticsearch7中添加用户名密码验证

1.找到elsatic的bin目录输入cmd 2.生成ca证书 输入 elasticsearch-certutil ca 在es7根目录生成ca证书&#xff0c;输入密码时直接回车即可&#xff0c;否则后面会报错 Please enter the desired output file [elastic-stack-ca.p12]: #这里直接回车即可 Enter password for…

JAVA学习日记1——JAVA简介及第一个java程序

简单记忆 JAVA SE &#xff1a;标准版&#xff0c;核心基础 JAVA EE&#xff1a;企业版&#xff0c;进阶 JDK&#xff1a;Java Development Kit&#xff0c;Java开发工具包&#xff0c;包含JRE JRE&#xff1a;Java Runtime Environment&#xff0c;Java运行时环境&#xff…

手撕 视觉slam14讲 ch7 / pose_estimation_3d2d.cpp (2)

上一篇文章中: 手撕ch7/pose_estimation_3d2d&#xff08;1&#xff09;&#xff0c;我们调用了epnp的方法进行位姿估计&#xff0c;这里我们使用非线性优化的方法来求解位姿&#xff0c;使用g2o进行BA优化 首先介绍g2o&#xff1a;可参考&#xff1a;g2o详细介绍 1.构建g2o图…

加权平均、EMD、小波等方法去噪效果对比

加权平均、EMD、小波等方法去噪效果对比 代码 整体代码如下 %% clear all; clc;load(data_filter120Hz.mat); %可自己生成随机噪声 fs1000;%采样频率是1000Hz %% %生成正弦波信号 tlinspace(0, length(data)/fs-1/fs, length(data)); y1 15*sin(2*pi* 2.8 *t);%生成频率为2.…

Android之使用QBadgeView给TabLayout顶部栏设置数量角标,数值可更新

TabLayout搭配ViewPager、Fragement使用可看另一篇文章&#xff1a; Android中TabLayoutViewPagerFragment实现顶部导航栏 本文主要描述给TabLayout的某一栏添加角标&#xff0c;数值可更新&#xff1a; 一、效果 二、TabLayout使用 1、xml文件中 <com.google.android.m…

通讯协议学习之路:QSPI协议理论

通讯协议之路主要分为两部分&#xff0c;第一部分从理论上面讲解各类协议的通讯原理以及通讯格式&#xff0c;第二部分从具体运用上讲解各类通讯协议的具体应用方法。 后续文章会同时发表在个人博客(jason1016.club)、CSDN&#xff1b;视频会发布在bilibili(UID:399951374) 一、…

【Django 01】环境搭配与项目配置

1. 介绍 https://github.com/Joe-2002/sweettalk-django4.2#readme Django 是一个使用 Python 编写的开源 Web 应用程序框架&#xff0c;它提供了一套用于快速开发安全、 可扩展和高效的 Web 应用程序的工具和功能。Django 基于 MVC&#xff08;Model-View-Controller&#xf…

Windows11家庭版没有本地组策略编辑器解决

1. 新建一个文本文件将下面代码粘到里面&#xff0c;保存后修改后缀为.cmd或者.bat echo off pushd "%~dp0"dir /b C:\Windows\servicing\Packages\Microsoft-Windows-GroupPolicy-ClientExtensions-Package~3*.mum >List.txt dir /b C:\Windows\servicing\Packa…

redis(普通连接和连接池、字符串类型、hash类型、列表类型)

1 redis普通连接和连接池 1.1 普通连接 1.2 连接池 2 redis字符串类型 3 redis hash类型 4 redis列表类型 1 redis普通连接和连接池 #1 python 代码作为客户端---》连接# 2 安装模块&#xff1a;pip install redis1.1 普通连接 from redis import Redisconn Redis(host&qu…

Selenium浏览器自动化怎么上传文件

Selenium 封装了现成的文件上传操作。但是随着现代前端框架的发展&#xff0c;文件上传的方式越来越多样。而有一些文件上传的控件&#xff0c;要做自动化控制会更复杂一些&#xff0c;这篇文章主要讨论在复杂情况下&#xff0c;如何通过自动化完成文件上传。 1. input 元素上传…

蓝桥杯每日一题2023.10.17

迷宫 - 蓝桥云课 (lanqiao.cn) 题目描述 样例&#xff1a; 01010101001011001001010110010110100100001000101010 00001000100000101010010000100000001001100110100101 01111011010010001000001101001011100011000000010000 0100000000101010001101000010100000101010101100…

Ubuntu18中的连接网络图标恢复

上图的图标不存在&#xff0c;也连不上网。 输入命令停止网络管理 service NetworkManager stop删除网络管理缓存文件 sudo rm /var/lib/NetworkManager/NetworkManager.state重启网络管理 service NetworkManager start修改网络管理文件 将‘managedfalse’修改为‘man…

性能测试-JMeter分布式测试及其详细步骤

性能测试概要 性能测试是软件测试中的一种&#xff0c;它可以衡量系统的稳定性、扩展性、可靠性、速度和资源使用。它可以发现性能瓶颈&#xff0c;确保能满足业务需求。很多系统都需要做性能测试&#xff0c;如Web应用、数据库和操作系统等。 性能测试种类非常多&#xff0c…

官媒代运营:如何将内容营销做到深入人心

生活中&#xff0c;信息传递和有效的沟通是我们与世界互动的重要方式&#xff0c;而语言是这种互动的关键媒介。然而&#xff0c;在营销界&#xff0c;我们已经迈出了更深一步&#xff0c;将语言与内容相结合&#xff0c;以创造内容营销这一强大的战略工具。内容&#xff0c;作…

小程序入门及案例展示

目录 一、小程序简介 1.1 为什么要使用小程序 1.2 小程序可以干什么 二、前期准备 2.1 申请账号 2.2 开发工具下载与安装 三、电商案例演示 四、入门案例 4.1 项目结构解析 4.2 基础操作及语法 4.3 模拟器 4.4 案例演示 4.4.1 新建页面 4.4.2 头部样式设置 4.4.…

linux 防火墙介绍以及iptables的使用

背景介绍 在前几天&#xff0c;于工发现我们内部的150服务器7554端口被外网访问了。该应用提供着内部的摄像头资源。为了避免被入侵&#xff0c;于是我添加了一些iptables规则&#xff0c;防止外网的访问。 解决方式 解决方式有两种&#xff1a; 关闭公司公网路由器对150服务…