Java:HTTP/HTTPS

HTTP

HTTP(全称"超文本传输协议")是一种应用最广泛的应用层协议;

文本=>字符串 超文本:可以传输文本,图片,语言等等其他的各种数据...

HTTP各种应用场景:

1.使用浏览器打开网页;

2.打开手机APP;

3.后端程序,都是"分布式/微服务"体系结构;

HTTPS可以认为是HTTP的升级版,和HTTP的差别在于引入了一层"加密层";

除了安全性之外,HTTP和HTTPS就是完全一样的;

HTTP协议是一种经典的"一问一答"式的模型:

客户端发一个请求,服务器返回一个响应;(一一对应)

---------------------------------------------------------------------------------------------------------------------------------

HTTP报文格式:        

可以借助抓包工具,来观察到HTTP详细的请求/响应的详细情况.

TCP/UDP也是可以抓包的,日常开发中比较少抓,但是HTTP是经常抓的;

抓包:把通过网卡上的数据获取到,并解析出来;

代理又分为正向代理和反向代理;

正向代理:给客户端当代理;

反向代理:给服务器当代理;

压缩:在二进制的角度上对数据进行重新编码,保证信息量不变,体积缩小;

体积小了,在网络传输中消耗的带宽资源(最贵的硬件资源)就少了,就是用CPU资源换带宽资源;

---------------------------------------------------------------------------------------------------------------------------------

浏览器看到的网页,就是由HTML,CSS,JavaScript构成,返回一个HTML给浏览器就是HTTP非常经典的场景;

发送HTTP请求,就是往TCP socket中,按照一定格式,写入一段字符串;

收到HTTP响应,就是从TCP socket中,读出一段字符串再解析;

以下是一个HTTP请求的抓包结果:        

首行

HTTP请求的方法(描述这个请求的动作) + URL访问的资源是什么 + HTTP的版本号

请求头(Header)

从第二行开始的若干行,一直到空行结束;

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

HTTP中,请求头的键值对都有哪些,是HTTP标准规定的,不同的请求头都有特定的含义;

标准也允许用户自定义一些请求头;

空行

请求头的结束标志;

正文(body)

不是一定有的;一般是要提交的数据;

---------------------------------------------------------------------------------------------------------------------------------

以下是一个HTTP响应的抓包结果:   

首行

版本号 + 状态码(成功[200]/失败/失败原因) + 状态码的描述;

响应头(Header)

从第二行开始的若干行,一直到空行结束;

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

也是标准规定的,有的键值对只能出现在请求中,有的只能出现在响应中,有的都能出现;

空行

响应头的结束标志;

正文

对应响应来说,正文通常是HTML/CSS/JSON/JS/图片/音频/字体....

-------------------------------------------------------------------------------------------------------------------------------

URL(唯一资源定位符)

互联⽹上的每个⽂件都有⼀个唯⼀的URL,

它包含的信息指出⽂件的位置以及浏览器应该怎么处理它.

URL不是HTTP专属的,很多协议都会用到;

补充:URI(唯一资源标识符),可以简单的理解为URL是URI的一种实现;

URL结构组成

协议方案名:

指出URL是给哪个协议来服务的;

登录信息(认证):

这种身份认证方式已经废弃了,都是有个单独的登录页面;

服务器地址:

可以是IP也可以是域名;

服务器端口号:

不写端口号的时候,服务器会根据协议类型自动拼接一个端口号,不是随机分配空闲端口,描述的是服务器的端口,是固定的;

如果是HTTP协议,浏览器自动加上80端口; 如果是HTTPS协议,浏览器自动加上443端口;

带层次的文件路径:

确定服务器上的具体资源;

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

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

相关文章

android studio 把unversioned文件加入git

在Android Studio中把未版本化的文件纳入Git版本控制,你可以按照以下步骤操作: 打开Android Studio。 打开你的项目。 在项目视图中,右键点击你想要添加的未版本化的文件或文件夹。 在上下文菜单中选择"Add to VCS" -> "…

【Promise】JS 异步之宏队列与微队列

文章目录 1 原理图2 说明3 相关面试题3.1 面试题13.2 面试题23.3 面试题33.4 面试题4 1 原理图 2 说明 JS 中用来存储待执行回调函数的队列包含 2 个不同特定的队列:宏队列和微队列。宏队列:用来保存待执行的宏任务(回调),比如:定…

递推经典例题 - 爬楼梯

一、题目阅读 题目描述 一段楼梯有n级台阶。你每次可以跨一个、两个或者三个台阶。 请问走上n级台阶有几种方案?答案对998244353取模。 输入格式 一行一个数n。 输出格式 一行一个数,表示方案数。 样例 Input 1 3 Output 1 4 样例解释 1 1 1 3 1 2 …

用 Python 从零开始创建神经网络(二):第一个神经元的进阶

第一个神经元的进阶 引言1. Tensors, Arrays and Vectors:2. Dot Product and Vector Additiona. Dot Product (点积)b. Vector Addition (向量加法) 3. A Single Neuron with NumPy4. A Layer of Neurons with NumPy5…

【优选算法 — 滑动窗口】最大连续1的个数 将 x 减到0的最小操作数

最大连续1的个数 最大连续1的个数 题目描述 题目解析 给我们一个元素全是0或者1的数组&#xff0c;和一个整数 k &#xff0c;然后让我们在数组选出最多的 k 个0&#xff1b;这里翻转最多 k 个0的意思&#xff0c;是翻转 0 的个数< k&#xff0c;而不是一定要翻转 k …

各种排序分组

简易排序方法如下: public static void XX(){var circles Z.db.SelectEntities<Circle>();circles circles.OrderByDescending(x > x.Center.Y).ThenBy(x > x.Center.X).ToList();for (int i 0; i < circles.Count; i){DBText text new DBText() { Positi…

svgicon大小问题(简单记录

Prob.: reactts下用类似import XxxIcon from "../icons/xxx.svg语句之后使用< XxxICon >标签&#xff0c;不能直接用style指定大小 &#xff08;viewbox好像是有效的&#xff0c;height和width类似只改了画布大小&#xff0c;没缩放里面的path&#xff09; 过程: 前…

RK3288 android7.1 适配 ilitek i2c接口TP

一&#xff0c;Ilitek 触摸屏简介 Ilitek 提供多种型号的触控屏控制器&#xff0c;如 ILI6480、ILI9341 等&#xff0c;采用 I2C 接口。 这些控制器能够支持多点触控&#xff0c;并具有优秀的灵敏度和响应速度。 Ilitek 的触摸屏控制器监测屏幕上的触摸事件。 当触摸发生时&am…

DICOM图像知识:DICOM图像排序与坐标系解析

目录 引言 1. 概述 2. DICOM图像排序规则 2.1 Patient的Study按Study Date排序 2.2 Study的Series按Series Number排序 2.3 Series的SOP按Instance Number或Slice Location排序 2.3.1 Instance Number排序 2.3.2 Slice Location排序 2.3.3 使用Image Position (Patien…

Vector和ArrayList

Vector和ArrayList都是Java集合框架中的一部分&#xff0c;它们提供了动态数组的功能&#xff0c;但在实现和使用场景上存在一些差异。以下是对Vector和ArrayList的详细比较&#xff1a; 一、线程安全性 Vector&#xff1a; 是线程安全的。Vector类的所有方法都使用了synchron…

css多列布局用法

文章目录 CSS多列布局详解与代码案例一、CSS多列布局介绍特点 二、CSS多列布局的用法1. 列数和宽度控制2. 列间距和规则3. 跨列和分列内容4. 列宽度自动调整5. 垂直对齐 三、CSS多列布局的代码案例示例一&#xff1a;基础多列布局示例二&#xff1a;响应式多列布局 CSS多列布局…

Js — 定时器

有两种&#xff1a;setInterval 和 setTimeout 间隔时间单位为毫秒 setInterval 每隔指定的毫秒数重复执行一个函数或代码 开启定时器&#xff1a;setInterval(函数&#xff0c;间隔时间) 作用&#xff1a;每隔一段时间调用这个函数 注意&#xff1a;它不是立即执行&#x…

【大数据测试spark+kafka-详细教程(附带实例)】

大数据测试&#xff1a;Spark Kafka 实时数据处理与窗口计算教程 1. 概述1.1 大数据技术概述1.2 Apache Kafka 与 Spark 的结合 2. 技术原理与流程2.1 Kafka 简介2.2 Spark Streaming 简介2.3 数据流动与处理流程 3. 环境配置3.1 安装依赖项 4. 实例&#xff1a;实时数据处理与…

其他教程:如何设计一个App扫码登录功能,来实现免账号密码登录功能,仅供参考

–本次教程是给大家列举一下常见的扫码登录功能&#xff0c;小程序或app均可参考&#xff0c;如需更安全的模式可多次设计加工&#xff0c;本次只列举概念层面的实现方式

ChatGPT键盘快捷键(按ctrl + /呼出)

文章目录 ChatGPT键盘快捷键- 打开新聊天: Ctrl Shift O- 聚焦聊天输入: Shift Esc- 复制最后一个代码块: Ctrl Shift ;- 复制最后一个回复: Ctrl Shift C- 设置自定义指令: Ctrl Shift I- 切换边栏: Ctrl Shift S- 删除聊天: Ctrl Shift ⌫- 显示快捷方式: Ctrl …

AWTK-HarmonyOS NEXT 发布

AWTK 全称为 Toolkit AnyWhere&#xff0c;是 ZLG 倾心打造的一套基于 C 语言开发的 GUI 框架。旨在为用户提供一个功能强大、高效可靠、简单易用、可轻松做出炫酷效果的 GUI 引擎&#xff0c;支持跨平台同步开发&#xff0c;一次编程&#xff0c;到处编译&#xff0c;跨平台使…

CSRF详解

CSRF&#xff0c;全称是Cross-Site Request Forgery&#xff0c;即跨站请求伪造&#xff0c;也被称为“one click attack”或者session riding&#xff0c;是一种网络攻击方式。它允许攻击者诱导用户在已登录的Web应用程序上执行非预期的操作。 工作原理CSRF攻击通常涉及三个主…

JSON格式

JSON&#xff08;JavaScript Object Notation&#xff09;是一种轻量级的数据交换格式&#xff0c;易于人和机器阅读和解析。它基于JavaScript的对象表示法&#xff0c;但被广泛用于多种编程语言。 JSON中的数据类型 字符串&#xff08;String&#xff09;&#xff1a;用双引…

【开发】Java的内存溢出

Java之内存溢出 Java之内存溢出 | OutOfMemoryError 我们都知道&#xff0c;在Java的世界里&#xff0c;由JVM管理着Java中的“垃圾对象”&#xff0c;也就是不被引用的对象&#xff1b;当一个对象不被其它对象引用的时候&#xff0c;该对象就会被垃圾回收器清理掉。但是在某些…

EasyExcel的AbstractColumnWidthStyleStrategy注入CellStyle不生效

设置背景色 CellStyle style workbook.createCellStyle();style.setFillForegroundColor(IndexedColors.RED.getIndex()); // 是设置前景色不是背景色style.setFillPattern(FillPatternType.SOLID_FOREGROUND)EasyExcel.writerTable(0).head(Head1.class).registerWriteHandl…