JAVAEE初阶相关内容第二十弹--HTTP协议【续集】

写在前:在前一篇博客中我们初步掌握了HTTP(超文本传输协议)的相关知识【点击跳转】,认识了HYYP协议的工作过程,掌握抓包工具Fiddler的使用。在“方法”中重点需要理解“GET”方法与“POST”方法的格式与内容,并了解了请求“报头”中的相关内容。

本篇博客将继续学习记录关于HTTP的相关内容,重点掌握关于HTTP响应的“状态码”,构造HTTP请求的方法,以及关于HTTPS的内容[对称加密、非对称加密、证书]

目录

1. 关于HTTP请求内容的补充

1.1 理解登录过程

1.2 认识"请求正文"(body)

1.2.1 application/x-www-form-urlencoded

1.2.2 form-data

1.2.3 application/json

2. HTTP响应

2.1 包含四部分

2.2 HTTP状态码--面试

2.2.1 常见状态码

2.2.2 状态码小结

2.3 HTTP协议报文格式总结

3. 构造HTTP请求

3.1 通过form表单

3.1.1 发送GET请求

(1) form重要参数

(2) input重要参数

3.2 通过ajax

4. HTTPS--面试

4.1 HTTPS是什么

4.2 “加密”是什么

4.3 HTTPS的工作过程

4.4 引入对称加密

4.5 引入非对称加密

4.6 引入证书


1. 关于HTTP请求内容的补充

1.1 理解登录过程

登录操作可以分成登录请求、登录响应、访问其他页面三个大部分,下面通过图示的方式进行更直观的理解。

1.2 认识"请求正文"(body)

正文中的内容格式和header中的Content-Type密切相关。

1.2.1 application/x-www-form-urlencoded

1.2.2 form-data

1.2.3 application/json

2. HTTP响应

2.1 包含四部分

HTTP响应包含四个部分:首行、header、空行(header的结束标志)、body

2.2 HTTP状态码--面试

状态码(status code),状态码表示访问一个页面的结果[是访问成功还是失败,还是其他情况]

2.2.1 常见状态码

状态码

含义
200 OK访问成功
404 Not Found没有找到资源
403 Forbidden拒绝被访问,有的页面通常需要用户具有一定的权限才能访问,没有登录直接访问,则可能会出现403
405 Method Not Allowed不支持方法
500 Internal Server Error服务器出现内部错误,一般是服务器的代码执行过程中遇到了一些特殊情况(服务器异常崩溃)会产生
504 Gateway Timeout当服务器负载比较大的时候,服务器处理单条请求的时候消耗的时间就会很长,就可能会导致出现超时的情况。
302 Move temporarily临时重定向--手机“呼叫转移”
301 Moved Permanently永久重定向,当浏览器收到这种响应的时候。后续的请求都会被自动改成新的地址

2.2.2 状态码小结

1等、2成功、3重定向、4客户端错误、 5服务器错误

2.3 HTTP协议报文格式总结

RequestResponse
请求行 Method URL Version状态行 Version 状态码 状态码描述
请求报头响应报头
空行空行
请求正文请求正文

3. 构造HTTP请求

对于GET【地址栏直接输入、点击收藏夹、html中的 link script img a 、form标签】

3.1 通过form表单

3.1.1 发送GET请求

(1) form重要参数

action:构造的HTTP请求的URL是什么

method:构造的HTTP请求的方法是GEThaishiPOST(form只支持GET和POST)

(2) input重要参数

type:表示输入框的类型,text(文本)、password(密码)、submit(提交)。

name:表示构造出的HTTP请求的query string 的key,query string的value就是输入框的用户输入的内容。

value:input标签的值,对于type为submit类型来说,value就对应了按钮上显示的文本。

 <form action="https://www.baidu.com" method="get"><input type="text" name="userId"><input type="submit" value="提交">
</form>

3.2 通过ajax

ajax也是浏览器提供的一种通过js构造http请求的方式【Asynchronous Javascript And XML】

    <script>$.ajax({type:'get',url:'https://www.baidu.com?studentName=zhangsan',//此处 success 就声明了一个回调函数,就会在服务器响应返回到浏览器的时候触发该回调//正是此处的 回调 体现了“异步+”success:function(data){console.log("当服务器返回响应到达浏览器之后,浏览器触发该回调,通知到咱们的代码中");}});console.log("浏览器立即往下执行后续代码");</script>

需要注意的是,上述代码的执行,只能看到构造的请求,无法获取到正确的响应;因为发送请求给百度这个服务器,服务器没有处理发送的请求。

ajax与form相比:ajax功能更强,支持put、delete等方法,ajax发送的请求可以灵活的设置header、ajax发送的请求的body也是可以灵活设置的。

4. HTTPS--面试

4.1 HTTPS是什么

HTTPS也是一个应用层协议,是在HTTP协议的基础上引入了一个加密层

HTTP协议内容都是按照文本的方式明文传输的,这就导致在传输过程中会出现一些被篡改的情况--运营商劫持。

不止运营商可以劫持,其他的黑客也可以用类似的手段进行劫持,来窃取用户的隐私信息,或者篡改内容。明文传输在互联网上是一件比较危险的事情。HTTPS就是在HTTP的基础上进行加密,进一步的来保证用户的信息安全。

4.2 “加密”是什么

加密就是把明文(要传输的信息)进行一系列的变换,生成密文

解密就是把密文在进行一系列的变换,还原成明文

在加密解密的过程中往往需要一个或多个中间的数据,辅助进行这个过程,这样的数据称为密钥

加密解密到如今已经发展成一个独立的学科:密码学。【奠基人--图灵】

4.3 HTTPS的工作过程

既然要保证数据安全,就需要进行“加密”

网络传输中不再直接传输明文了,而是加密之后的“密文”

加密的方式有很多,但是整体可以分成两大类:对称加密非对称加密

4.4 引入对称加密

对称加密其实就是通过同一个"密钥",把明文加密成密文,并且也能把密文解密成明文,引入对称加密之后,由于黑客不知道密钥是啥,因此就无法解密,也就不知道请求的真实内容是啥了。但是,服务器是给很多个客户端提供服务的,客户端的每个人用的密钥必须是不同的【如果是相同的密钥就很容易扩散,黑客也就很容易拿到了】,因此服务器就需要维护每个客户端和每个密钥之间的关联联系,这也是个很麻烦的事情。

比较理想的做法,就是能在客户端和服务器建立连接的时候,双方协商确定好这次密钥是啥,但是密钥被明文传输,那么黑客也就能获得密钥了,此时后续的加密操作就形同虚设了。

因此密钥的传输也必须加密传输。此时就引入了非对称加密

4.5 引入非对称加密

非对称加密需要用到两个密钥,一个叫做“公钥”,一个叫做“私钥”。

公钥和私钥是配对的,最大的缺点是运行速度非常慢,比对称加密要慢的多。

通过公钥对明文加密,变成密文;通过私钥对密文解密,变成明文【也可以反着用】

客户端在本地生成对称密钥,通过公钥加密,发送给服务器;由于中间的网络设备没有私钥,即使截获了数据,也无法还原出内部的原文,也就无法获得对称密钥;服务器通过私钥解密,还原出客户端的对称密钥,并且使用这个对称密钥加密给客户端返回的响应数据,后续客户端和服务器的通信只用对称即可,由于该密钥只有客户端和服务器两个主机知道,其他主机/设备不知道密钥,即使截获数据也没有意义。

接下来需要解决的问题:但是此时还会出现一个问题--客户端如何获得公钥?客户端如何确定这个公钥不是黑客伪造的?

【中间人攻击】--此时就引入“证书”的概念

4.6 引入证书

证书是解决中间人攻击的关键,在于让客户能够辨别,当前这个响应“公钥”是服务器真正的公钥。引入“证书”,本质上是引入第三方的公证机构,服务器(网站)在设计之初,就需要去专门的认证机构,申请证书(提供一些资质的),审核通过,就会给你颁发证书,服务器生成的公钥也就包含在了证书中,客户端向服务器请求公钥的时候,此时就不是请求淡淡的一个公钥,而是把整个证书都请求过来。

客户端在拿到证书之后,就可以对证书进行校验[验证一下证书是不是假的,是否被篡改,如果发现证书是无效的,浏览器就会直接弹框警告]。

总结HTTPS工作过程中涉及到的三组密钥

第一组(非对称加密):用于校验证书是否被篡改,服务器持有私钥(私钥在注册证书的时候获得)。客户端持有公钥(操作系统包含了可信任的CA认证的机构有哪些,同时持有对应的公钥)。服务器使用这个私钥对证书的签名进行加密,客户端通过这个公钥解密获取到证书的签名,从而校验证书内容是否篡改过。

第二组(非对称加密):用于协商生成对称加密的密钥,服务器生成这组私钥-公钥对,然后通过证书把公钥传递给客户端,然后客户端用这个公钥给生成的对称加密的密钥加密,传输给服务器,服务器通过私钥解密,获取到对称加密密钥。

第三组(对称加密):客户端和服务器后续传输的数据都通过这个对称密钥加密解密。

主线任务--对称密钥。其他机制--辅助这个密钥工作。

第二组非对称加密的密钥是为了让客户端把这个对称密钥传给服务器。

第一组非对称加密是为了让客户端拿到第二组非对称加密的公钥。

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

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

相关文章

el-table 展开行表格,展开的内容高度可以变化时,导致的固定列错位的问题

问题描述 一个可展开的表格&#xff08;列设置了type“expand”&#xff09;&#xff0c;并且展开后的内容高度可以变化&#xff0c;会导致后面所有行的固定列错位&#xff0c;图如下&#xff0c;展示行中是一个树形表格&#xff0c;默认不展示子级&#xff0c;点击树形表格的…

彻底解决vue-video-player视频铺满div

需求 最近需要接入海康视频摄像头&#xff0c;然后把视频的画面接入到自己的网站系统中。以前对接过rtsp固定IP的显示视频&#xff0c;这次的不一样&#xff0c;没有了固定IP。海康的解决办法是&#xff0c;摄像头通过配置服务器到萤石云平台&#xff0c;然后购买企业版账号和…

Rocky9.3 安装MySQL后如何设置初始密码

Rocky9.3 安装MySQL后如何设置初始密码 启动MySQL服务查看临时密码设置新密码 启动MySQL服务 安装MySQL后需要看一下服务是否已经启动&#xff1a; systemctl status mysqld如果没有启动的话&#xff0c;需要先启动MySQL服务&#xff1a; systemctl start mysqld # 临时启动…

Spring Boot学习随笔- 集成MyBatis-Plus(二)条件查询QueryWrapper、聚合函数的使用、Lambda条件查询

学习视频&#xff1a;【编程不良人】Mybatis-Plus整合SpringBoot实战教程,提高的你开发效率,后端人员必备! 查询方法详解 普通查询 // 根据主键id去查询单个结果的。 Test public void selectById() {User user userMapper.selectById(1739970502337392641L);System.out.print…

Linux的基本指令(5)

目录 bc指令 uname指令 压缩解压相关的指令 zip指令 unzip指令 tar打包压缩指令 tar解压解包指令 ​编辑​编辑sz&rz 热键 关机命令 安装&#xff1a;yum install -y 指令 bc指令 bc命令可以很方便的进行浮点运算 Linux中的计算器 uname指令 语法&#xff1a;un…

春招冲刺第一天:Excel入门

春招冲刺第一天 前言&#xff1a; 转行换方向了家人们&#xff0c;准备往数据分析那转了&#xff0c;实习我现在也找不到&#xff0c;打算先猛学两周技术&#xff0c;过完年再投简历了。 时间确实非常紧张&#xff0c;目前一天计划学8小时以上&#xff0c;主要参考视频——&g…

从vue小白到高手,从一个内容管理网站开始实战开发第六天,登录功能后台功能设计--API项目中的登录实现(二),工厂模式创建数据库连接

一、回顾 在第五天的时候我们开始创建后台所以需项目,并创建项目所需要的相关实体类,具体内容没有掌握的小伙伴可以看点击下面的链接去学习。 从vue小白到高手,从一个内容管理网站开始实战开发第六天,登录功能后台功能设计--API项目中的登录实现(一)-CSDN博客文章浏览阅读…

uniappVue3版本中组件生命周期和页面生命周期的详细介绍

一、什么是生命周期&#xff1f; 生命周期有多重叫法&#xff0c;有叫生命周期函数的&#xff0c;也有叫生命周期钩子的&#xff0c;还有钩子函数的&#xff0c;其实都是代表&#xff0c;在 Vue 实例创建、更新和销毁的不同阶段触发的一组钩子函数&#xff0c;这些生命周期函数…

【java爬虫】首页显示沪深300指数走势图以及前后端整合部署方法

添加首页 本文我们将在首页添加沪深300指数成立以来的整体走势数据展示&#xff0c;最后的效果是这样的 单独贴一张沪深300整体走势图 我感觉从总体上来看指数还是比较稳的&#xff0c;没有特别大的波动&#xff0c;当然&#xff0c;这只是相对而言哈哈。 首先是前端页面 &l…

HarmonOS 通用组件(Button)

本文 我们来看看基础组件中的 Button 这是 ArkTS ui 原生支持的一个组件 用来创建不同样式的按钮 首先 我们还是创建一个最基本的组件结构 Entry Component struct Index {build() {Row() {Column() {}.width(100%)}.height(100%)} }我们可以在 Column 组件中 加入一个button…

【Electron】快速建立Vue3+Vite+Electron Ts项目

git https://github.com/electron-vite/electron-vite-vue 创建项目 npm create electron-vite or pnpm create electron-vite 初始化 pnpm install or pnpm i 启动项目 pnpm dev 打包项目 pnpm build 项目创建成功后默认情况下 窗口是H800 W600 在createWindow 函数…

亚马逊自养号测评:提升商品排名与流量的必要操作

自养号测评是通过使用自主注册的海外买家账号&#xff0c;对商品进行评价&#xff0c;以提升其在平台上的排名和流量的操作。卖家选择自养号这种方式来增强商品的曝光度和吸引更多潜在买家。然而&#xff0c;养号并非易事&#xff0c;需要卖家提高养号技术、掌握相应技巧&#…

java中list,map习题

&#x1f4d1;前言 本文主要是【java】——java中list,map习题的文章&#xff0c;如果有什么需要改进的地方还请大佬指出⛺️ &#x1f3ac;作者简介&#xff1a;大家好&#xff0c;我是听风与他&#x1f947; ☁️博客首页&#xff1a;CSDN主页听风与他 &#x1f304;每日一句…

dubbo的基础知识

dubbo是什么 Dubbo是一个分布式服务框架&#xff0c;是一种高性能的远程通讯框架。它提供了基于Java的RPC&#xff08;远程过程调用&#xff09;通信机制&#xff0c;使得应用之间可以方便地进行远程调用&#xff0c;实现分布式服务的调用和管理。Dubbo提供了服务注册、发现、负…

GPT实战系列-大模型为我所用之借用ChatGLM3构建查询助手

GPT实战系列-https://blog.csdn.net/alex_starsky/category_12467518.html 如何使用大模型查询助手功能&#xff1f;例如调用工具实现网络查询助手功能。目前只有 ChatGLM3-6B 模型支持工具调用&#xff0c;而 ChatGLM3-6B-Base 和 ChatGLM3-6B-32K 模型不支持。 定义好工具的…

【Java集合篇】负载因子和容量的关系

负载因子和容量有什么关系 ✔️典型解析✔️loadfactor为啥默认是0.75F&#xff0c;不是1呢?✔️为什么HashMap的默认负载因子设置成0.75✔️0.75的数学依据是什么✔️0.75的必然因素 ✔️HashMap的初始值设为多少合适? ✔️典型解析 HashMap 中有几个属性&#xff0c;如 cap…

【已解决】js定义对象属性是.如何访问

当变量没有length属性的时候&#xff0c;可能是个对象变量&#xff0c;当有键值对的时候就可能是个对象&#xff0c;读者都知道的是&#xff0c;用typeof(变量)可以查看属性&#xff0c;今天本文解决的问题是如果js定义对象中属性是"点"如何访问 问题再现 var a {…

iPhone 恢复出厂设置后如何恢复数据

如果您在 iPhone 上执行了恢复出厂设置&#xff0c;您会发现所有旧数据都被清除了。这对于清理混乱和提高设备性能非常有用&#xff0c;但如果您忘记保存重要文件&#xff0c;那就是坏消息了。 恢复出厂设置后可以恢复数据吗&#xff1f;是的&#xff01;幸运的是&#xff0c;…

第13课 利用openCV检测物体是否运动了

FFmpeg与openCV绝对是绝配。前面我们已经基本熟悉了FFmpeg的工作流程&#xff0c;这一章我们重点来看看openCV。 在前面&#xff0c;我们已经使用openCV打开过摄像头并在MFC中显示图像&#xff0c;但openCV能做的要远超你的想像&#xff0c;比如可以用它来实现人脸检测、车牌识…

基于平衡优化器算法优化的Elman神经网络数据预测 - 附代码

基于平衡优化器算法优化的Elman神经网络数据预测 - 附代码 文章目录 基于平衡优化器算法优化的Elman神经网络数据预测 - 附代码1.Elman 神经网络结构2.Elman 神经用络学习过程3.电力负荷预测概述3.1 模型建立 4.基于平衡优化器优化的Elman网络5.测试结果6.参考文献7.Matlab代码…