了解应用层的HTTP协议与HTTPS协议,在常规请求的应用中Get与Post的区别

一、HTTP协议

  • 1、http协议的特性
  • 2、http协议的请求
    • 请求行
      • GET请求
      • POST 请求(人脸识别方案)
      • 两个请求的区别
      • 本质区别:
        • (1)url 携带的参数是否可见:
        • (2)参数传递方式
        • (3)缓存性
        • (4)页面后退的反应
        • (5)传输数据的大小
        • (6)安全性
    • 请求头
    • 请求主体
  • 3、http协议的响应
    • 响应行
    • 响应头
    • 响应主体

二、 HTTPS协议

  • 1、简介与原理
  • 2、密码学基础
    • 明文与密文
    • 密钥
      • 对称加密(私钥+私钥)
      • 非对称加密(公钥+私钥)

三、HTTPS相对于HTTP优缺点

  • 优点:正确率更高,安全性更强
  • 缺点:效率低,成本高

http协议
Linux网络编程—详解HTTP协议
接口测试中的Get与Post的区别是什么?
状态码:http协议中各个响应状态200_301_404_500等返回值含义快速一览

一、HTTP协议

重点了解GET请求和POST请求,以及他们的区别。

1、http协议的特性

http协议是建立在TCP/IP协议之上应用层协议,默认端口为80或者8080

http协议的的特点是无状态,短连接

2、http协议的请求

利用抓包工具httpwatch可以获取报文,多见于前端,后端用于分析数据传输过程中产生的问题

http协议的报文传输的是ASCII码,在TCP/IP协议之上,主要主要分为三部分:

请求行

浏览器向服务器发送的,在第一行,包含:

  • 请求方式(GET请求、POST请求)
  • url(网址)
  • http协议版本
GET请求

例如:
在这里插入图片描述
请求方式是GET请求,url 携带的参数可见,http协议版本是1.1

POST 请求(人脸识别方案)

例如:请添加图片描述
请求方式为POST请求,url携带的参数不可见,协议版本是1.1

两个请求的区别
本质区别:

GET产生一个TCP数据包;POST产生两个TCP数据包。

对于GET方式的请求,浏览器会把 http header 和 data 一并发送出去,服务器响应200(返回数据);
对于POST,浏览器先发送header,服务器响应100 continue,浏览器再发送 data,服务器响应200 ok(返回数据)。

(1)url 携带的参数是否可见:
  • get,url 携带的参数可见

例如:

var url = 'http://192.168.1.40:8080/v1/sea?page=1&per_page=10' + 'search=' + escape(str)

参数用 & 符号进行连接,被当做参数的分隔符来进行处理。上面就两个参数。
page=1,per_page=10

  • post,url 携带的参数不可见
    有参数,但被隐藏起来了,可以通过抓包查看这个参数。
(2)参数传递方式
  • get,通过请求行拼接url进行传递参数

  • post,通过请求主体传输参数

(3)缓存性
  • get 请求是可以缓存的

  • post 请求不可以缓存

(4)页面后退的反应
  • get 请求页面后退时,不产生影响(因为有缓存)

  • post 请求页面后退时,会重新提交请求(没有缓存)

(5)传输数据的大小
  • get 一般传输数据大小不超过2k-4k(根据浏览器不同,限制不一样,但相差不大)

  • post 请求传输数据的大小根据 php.ini 配置文件设定,也可以无限大

(6)安全性

这个也是最不好分析的,原则上 post 肯定要比 get 安全,毕竟传输参数时 url 不可见,但也挡不住部分人闲的没事在那抓包玩。安全性个人觉得是没多大区别的,对传递的参数进行加密,其实都一样。

请求头

浏览器向服务器发送一些状态数据,标识数据等等

一个信息一行,包括信息名:信息值,按行分隔。

User-Agent: firefox//表示发送请求的浏览器(请求代理端)是firefox
Host: shop.100.com//表示请求的主机域名(基于域名的虚拟主机就是靠这个头判断的)
Cookie:name=itcast//浏览器携带的cookie数据。
Content-Type: application/x-www-form-urlencoded
Content-Length: 40
Connection: Keep-Alive

注意,请求头信息,需要使用一个空行结束!

请求主体

请求代理端向服务器端,发送的请求数据!

典型的就是POST形式发送的表单数据

get请求,没有请求主体部分!get数据是在请求行中的url上进行传递的!

3、http协议的响应

HTTP/1.1 200 ok
Date: Tue,19 Nov 2013 03:08:55 GMT
Server: Apache/2. 2.22 (Win32) PHP/5.3. 13
X- -Powered -By: PHP/5. 3.13
Content-Length: 16
Content- Type: text/html

响应行

响应行包括:协议版本、状态码、状态消息。
典型的:

1xx:消息
2xx:成功
3xx:请求被重定向
4xx:浏览器端错误
5xx:服务器端错误

响应头

Date:响应的时间。GMT时间!
Content-Length: 响应主体数据的长度!
Content-Type: text/html :内容类型:告知浏览器接下来发送的响应主体数据是什么格式!

响应主体

主要的响应数据,在浏览器的主体区域显示的数据都是相应主体!(前端人员通过html和css技术实现的排版,对于C语言来说拿到的就是一段ASCII码、一段字符串)

注意,每行,包括相应行和响应头,都需要一个 \r\n 结尾

二、 HTTPS协议

1、简介与原理

http协议是明文传输的,因此很容易被截取和解析,泄漏个人数据。
https协议是在 http 和 tcp 之间多添加了一层加密SSL,进行身份验证和数据加密

2、密码学基础

明文与密文

明文: 明文指的是未被加密过的原始数据
密文: 明文被某种加密算法加密之后,会变成密文,从而确保原始数据的安全。密文也可以被解密,得到原始的明文。

密钥

密钥:密钥是一种参数,它是在明文转换为密文或将密文转换为明文的算法中输入的参数

密钥分为对称密钥与非对称密钥,分别应用在对称加密和非对称加密上。

对称加密(私钥+私钥)

对称加密:对称加密又叫做私钥加密,即信息的发送方和接收方使用同一个密钥去加密和解密数据。

对称加密的特点是算法公开、加密和解密速度快,适合于对大数据量进行加密,常见的对称加密算法有DES、3DES、TDEA、Blowfish、RC5和IDEA。

其加密过程如下:明文 + 加密算法 + 私钥 => 密文
解密过程如下: 密文 + 解密算法 + 私钥 => 明文

对称加密中用到的密钥叫做私钥,私钥表示个人私有的密钥,即该密钥不能被泄露。

其加密过程中的私钥与解密过程中用到的私钥是同一个密钥,这也是称加密之所以称之为“对称”的原因。

由于对称加密的算法是公开的,所以一旦私钥被泄露,那么密文就很容易被破解,所以对称加密的缺点是密钥安全管理困难

非对称加密(公钥+私钥)

非对称加密:非对称加密也叫做公钥加密

非对称加密使用一对密钥,即公钥和私钥,且二者成对出现。私钥被自己保存,不能对外泄露。公钥指的是公共的密钥,任何人都可以获得该密钥。用公钥或私钥中的任何一个进行加密,用另一个进行解密。

(1)被公钥加密过的密文只能被私钥解密,过程如下:
明文 + 加密算法 + 公钥 => 密文, 密文 + 解密算法 + 私钥 => 明文
(2)被私钥加密过的密文只能被公钥解密,过程如下:
明文 + 加密算法 + 私钥 => 密文, 密文 + 解密算法 + 公钥 => 明文

由于加密和解密使用了两个不同的密钥,这就是非对称加密“非对称”的原因。

非对称加密的缺点是加密和解密花费时间长、速度慢,只适合对少量数据进行加密。

在非对称加密中使用的主要算法有:RSA、Elgamal、Rabin、D-H、ECC(椭圆曲线加密算法)等。

这些算法不用亲自去写,已经成为一种标准,有现成的库去调用实现即可。

三、HTTPS相对于HTTP优缺点

优点:正确率更高,安全性更强

使用 HTTPS 协议可认证用户和服务器,确保数据发送到正确的客户机和服务器 ;

HTTPS 协议是由 SSL + HTTP 协议构建的可进行加密传输、身份认证的网络协议,要比 HTTP 协议安全,可防止数据在传输过程中不被窃取、改变,确保数据的完整性 。

HTTPS 是现行架构下最安全的解决方案,虽然不是绝对安全,但它大幅增加了中间人攻击的成本 。

缺点:效率低,成本高

相同网络环境下,HTTPS 协议会使页面的加载时间延长近 50%,增加 10%到 20%的耗电。

HTTPS 协议还会影响缓存,增加数据开销和功耗 。

HTTPS 协议的安全是有范围 中间人攻击 伪造证书

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

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

相关文章

MongoDB中的$type操作符和limit与skip方法

本文主要介绍MongoDB中的$type操作符和limit与skip方法。 目录 MongoDB的$type操作符MongoDB的limit方法MongoDB的skip方法 MongoDB的$type操作符 MongoDB中的$type操作符用于检查一个字段的类型是否与指定的类型相匹配。它可以用于查询和投影操作。 $type操作符可以与以下数…

【SpringBoot】解析Springboot事件机制,事件发布和监听

解析Springboot事件机制,事件发布和监听 一、Spring的事件是什么二、使用步骤2.1 依赖处理2.2 定义事件实体类2.3 定义事件监听类2.4 事件发布 三、异步调用3.1 启用异步调用3.2 监听器方法上添加 Async 注解 一、Spring的事件是什么 Spring的事件监听(…

【五分钟】学会利用cv2.resize()函数实现图像缩放

引言 在numpy知识库:深入理解numpy.resize函数和数组的resize方法中,小编较为详细地探讨了numpy的resize函数背后的机理。从结果来看,numpy.resize函数并不适合对图像进行缩放操作。而opencv中的resize函数虽然和numpy的resize函数同名&…

html实现动漫视频网站模板源码

文章目录 1.视频设计来源1.1 主界面1.2 动漫、电视剧、电影视频界面1.3 播放视频界面1.4 娱乐前线新闻界面1.5 关于我们界面 2.效果和源码2.1 动态效果2.2 源代码 源码下载 作者:xcLeigh 文章地址:https://blog.csdn.net/weixin_43151418/article/detail…

查看网页的cookie

1、打开需要查看的网站,F12 2、点击Network——Doc,选择一项 3、在Request Headers里查找

PyTorch实现逻辑回归

最终效果 先看下最终效果: 这里用一条直线把二维平面上不同的点分开。 生成随机数据 #创建训练数据 x torch.rand(10,1)*10 #shape(10,1) y 2*x (5 torch.randn(10,1))#构建线性回归参数 w torch.randn((1))#随机初始化w,要用到自动梯度求导 b …

【开源】基于Vue和SpringBoot的衣物搭配系统

项目编号: S 016 ,文末获取源码。 \color{red}{项目编号:S016,文末获取源码。} 项目编号:S016,文末获取源码。 目录 一、摘要1.1 项目介绍1.2 项目录屏 二、研究内容2.1 衣物档案模块2.2 衣物搭配模块2.3 衣…

深度模型训练时CPU或GPU的使用model.to(device)

一、使用device控制使用CPU还是GPU device torch.device("cuda:0" if torch.cuda.is_available() else "cpu") # 单GPU或者CPU.先判断机器上是否存在GPU,没有则使用CPU训练 model model.to(device) data data.to(device)#或者在确定有GPU的…

python+pytest接口自动化之参数关联

什么是参数关联? 参数关联,也叫接口关联,即接口之间存在参数的联系或依赖。在完成某一功能业务时,有时需要按顺序请求多个接口,此时在某些接口之间可能会存在关联关系。比如:B接口的某个或某些请求参数是通…

TA-Lib学习研究笔记(九)——Pattern Recognition (1)

TA-Lib学习研究笔记(九)——Pattern Recognition (1) 0.程序代码 形态识别的函数的应用,通过使用A股实际的数据,验证形态识别函数,用K线显示出现标志的形态走势,由于入口参数基本上…

大学生有担当,乡村振兴新亮点“艺术点亮乡村,创意引领未来”

12月7日上午,由花都区文化馆(区非物质文化遗产保护中心)指导,广州工商学院主办,广州工商学院国际教育学院承办,花都区文化馆炭步分馆、广州盛美文化传播有限公司协办的广州工商学院国际教育学院视觉传达设计…

C++新经典模板与泛型编程:策略类模板

策略类模板 在前面的博文中,策略类SumPolicy和MinPolicy都是普通的类,其中包含的是一个静态成员函数模板algorithm(),该函数模板包含两个类型模板参数。其实,也可以把SumPolicy和MinPolicy类写成类模板—直接把algorithm()中的两…

C/C++,树算法——二叉树的插入、移除、合并及遍历算法之源代码

1 文本格式 #include<iostream>; using namespace std; // A BTree node class BTreeNode { int* keys; // An array of keys int t; // Minimum degree (defines the range for number of keys) BTreeNode** C; // An array of child pointers …

SAP FICO S_ALR_87013611 报表列宽度的调整

如何去调整&#xff1f; 选中对应的列 菜单-设置-列属性 连起来

十一、了解分布式计算

1、什么是&#xff08;数据&#xff09;计算&#xff1f; 2、分布式(数据)计算 &#xff08;1&#xff09;概念 顾名思义&#xff0c;分布式计算&#xff0c;即以分布式的形式完成数据的统计&#xff0c;得到需要的结果。 分布式数据计算&#xff0c;顾名思义&#xff0c;就是…

idea开发环境配置

idea重新安装后&#xff0c;配置的东西还挺多的&#xff0c;这里简单记录一下。 1、基础配置 1.1、主题、背景、主题字体大小 1.2、默认字体设置 控制台默认编码设置&#xff1a; 全局文件默认编码设置&#xff1a; 2、构建、编译、部署配置 说明&#xff1a;本地装了JD…

【Java基础篇 | 面向对象】—— 聊聊什么是接口(下篇)

个人主页&#xff1a;兜里有颗棉花糖 欢迎 点赞&#x1f44d; 收藏✨ 留言✉ 加关注&#x1f493;本文由 兜里有颗棉花糖 原创 收录于专栏【JavaSE_primary】 本专栏旨在分享学习JavaSE的一点学习心得&#xff0c;欢迎大家在评论区交流讨论&#x1f48c; 上篇&#xff08;【Ja…

学习Linux(1)-开始前的准备

一、Linux介绍 如图,“Linux的发行版说简单点就是将Linux内核与应用软件做一个打包”&#xff0c;所以&#xff0c;我们要学习Linux&#xff0c;就要选择一个趁手的应用软件&#xff0c;通常使用较多的有centerOs、Ubuntu。本文将基于centerOs6进行学习。 二、安装环境 使用Li…

认识线程和创建线程

目录 1.认识多线程 1.1线程的概念 1.2进程和线程 1.2.1进程和线程用图描述关系 1.2.2进程和线程的区别 1.3Java 的线程和操作系统线程的关系 2.创建线程 2.1继承 Thread 类 2.2实现 Runnable 接口 2.3匿名内部类创建 Thread 子类对象 2.4匿名内部类创建 Runnable 子类对…

SAP UI5 walkthrough step7 JSON Model

这个章节&#xff0c;帮助我们理解MVC架构中的M 我们将会在APP中新增一个输入框&#xff0c;并将输入的值绑定到model&#xff0c;然后将其作为描述&#xff0c;直接显示在输入框的右边 首先修改App.controllers.js webapp/controller/App.controller.js sap.ui.define([&…