当前位置: 首页 > news >正文

网络编程5----初识http

1.1 请求和响应的格式

http协议和前边学过的传输层、网络层协议不同,它是“一问一答”形式的,所以要分为请求响应两部分看待,同时,请求和响应的格式是不同的,我们来具体介绍一下。

1.1.1 请求

在介绍请求之前,先来看一个具体的http使用案例:

首先我们能看到的是,http的内容是能够直接看懂的,说明http是文本形式的,不同于TCP、IP协议的二进制形式,http的响应也是文本形式的,但是我们查看时会发现是二进制形式,这是因为响应在网络传输过程中会被压缩为二进制形式,用来提高传输效率,节省网络带宽。

请求分为以下几个部分:

1、首行

这是http的第一行 分为三个部分,用空格分隔

1)GET:http请求的方法(method),还有其它很多方法,之后介绍

2)URL:唯一资源定位符,描述了一个资源在网络中的位置

3)版本号:

2、请求头

请求头是很多键值对结构的数据,每个键值对都是独占一行的,要注意的是,这里的键值对都是属于“标准规定的”,即key和value都有固定的东西,不可以程序员自己随便定义

3、空行

请求头的结束标记

4、正文(请求体)

有的http请求有,有的没有,后边详细介绍

1.1.2 响应 

响应也是由四部分构成的:

1、首行

1)版本号:HTTP/1.1

2)  状态码:200

3)状态码描述:OK

2、响应头

响应头的格式和请求头是一样的,也是键值对形式的,但是具体的键和值不同,后边会详细介绍

3、空行

响应头的结束标记

4、正文(响应体)

正文里的内容可能会很长,有很多中形式,HTML、CSS、JS、JSON、图片、视频.....

1.2 请求(详细版)

1.2.1 首行

请求方法:

请求方法有上图中那么多种,在这里我们只介绍最常用的GET和POST方法。

GET:通常会把要传给服务器的数据放在URL的查询字符串中(query string)

POST:通常会把要传给服务器的数据放在请求体中

这是GET和POST最本质的区别,接下来介绍的一些特点均是基于这个区别的:

注意:GET请求和POST请求的区别是面试中的常考题,但是由于技术的发展,这些区别已经属于“历史遗留”问题了,现在二者已经可以相互替换,差别不大了,所以了解即可:

1、GET请求能传递的数据量有上限,POST请求能传递的数据量没有上限

这种说法产生的原因是因为GET请求携带数据是放在query string中的,而POST请求携带数据是放在请求体中的,有一定的道理,但是随着技术的进步,现在的URL甚至可以携带图片资源,所以这种说法应该会逐渐消失

2、GET请求传递数据不安全,POST请求传递数据安全

举个例子,在我们登录账号时,如果使用GET请求,账号和密码都会直接携带在URL中,可以直接被看到,而POST的账号和密码是隐藏在请求体中的,不会被看到,所以有更安全这个说法,但是!!!这个说法是不正确的,上述的例子骗一个不懂计算机的小白或许还可以的,但是对于一个黑客,无论你的数据放在哪里,他都能拿到,所以,想要数据安全,要采取别的方法,比如加密措施....

3、GET只能给服务器传文本数据,POST可以给服务器传文本和二进制数据

这种说法也是不正确的:

1)GET请求也可以把数据放在请求体中(只是通常不这样做)

2)GET也可以把二进制数据进行base64转码,放在URL的query string中

4、GET请求是幂等的,POST请求是不幂等的

幂等:输入相同的数据,输出是稳定的

比如奶牛产奶,吃草之后,奶牛一定产的是牛奶,而不是别的东西,这就是幂等的。

但是这种说法也不完全正确,当我们使用GET请求访问一些广告页面时,输入的请求相同,但是输入的广告常常是不相同的,所以这种说法也不完全正常

5、GET请求可以被浏览器缓存,POST不可以被缓存

这个说法其实是基于第4个说法的,如果每次输出稳定,当然可以将数据缓存在浏览器中,反正每次请求的输出都一样,那直接在缓存中拿来使用不就好了

6、GET请求可以被浏览器收藏夹收藏,POST不可以被收藏

这种说法的主要原因是认为收藏的时候可能会丢失请求的body

URL:

这是请求首行中URL的具体划分:

  • 协议方案名:指出用到的协议是什么
  • 登录信息(认证):现在大多数请求已经没有了
  • 服务器地址:服务器在网络中的位置,也就是IP 地址,此处用域名表示
  • 服务器端口号:指明了具体要访问服务器中的哪个程序
  • 带层次的文件路径:指明了具体要访问程序中的哪个资源
  • 查询字符串:是一种键值对结构的数据,以?开头,这里的键值对都是程序猿自定义的,相当于对这次请求的一些补充说明
  • 片段标识符:有的网页内容比较长,就需要划分为多个“片段”,通过片段标识符,能够实现页面内部的跳转(技术文档中十分常见)

对于URL,给大家举个具体的例子:

http://小淘气食堂:80/包子/猪肉大葱包子?葱=少放&辣椒=微辣

对于上述这个例子,小淘气食堂就是域名,也就是要访问的网络资源的地址,80是这个食堂中具体的窗口,也就是我们要访问的具体的程序,包子/猪肉大葱包子是在这个窗口中具体想要访问的资源,?葱=少放&辣椒=微辣就是我们说的查询字符串,是对于这次请求的一个补充说明。

1.2.2 请求头

请求头里的键值对很多,这里介绍几个比较重要的:

1、HOST:这是请求的域名,在URL中也有,即服务器的网络地址

2、Content-Length:body中数据的长度

3、Content-type:body中数据的类型

请求中有body才会有以上两种请求头键值对,GET请求通常没有body,所以通常没有,POST请求有body,所以请求头中会包含以上两种键值对

Content-type是有很多类型的,例如:

  • json
  • form表单的格式
  • form-data的格式

后续给服务器提交请求时,不同的Content-type,服务器处理数据的逻辑是不同的,服务器返回数据给浏览器,也需要设置合适的Content-type,浏览器也会根据不同的Content-type做出不同的处理。

4、User-Agent

5、Referer:Referer描述了当前页面是从哪个页面跳转过来的

6、Cookie:Cookie可以认为是浏览器在本地存储数据的一种机制(即直接把数据保存在浏览器中)

浏览器的数据都来自服务器,之后的操作也会将数据提交给服务器,但是在程序运行过程中,也有一些数据需要存储在浏览器本地(例如上次登陆时间、用户的身份信息...),这些数据是需要在下次传给服务器数据时一并发送过去的,这些临时性的数据,就存储在浏览器比较合适。以下是一些Cookie在日常应用中的例子:

相关文章:

网络编程5----初识http

1.1 请求和响应的格式 http协议和前边学过的传输层、网络层协议不同,它是“一问一答”形式的,所以要分为请求和响应两部分看待,同时,请求和响应的格式是不同的,我们来具体介绍一下。 1.1.1 请求 在介绍请求之前&…...

“用友审批+民生付款”,YonSuite让企业发薪更准时

随着现代企业经营模式的不断创新和市场竞争的加剧,企业薪资管理和发放的效率、准确性和及时性已成为企业管理的重要一环。然而,在实际操作中,许多企业面临着薪资管理复杂、发放流程繁琐、数据不准确等难点和痛点。为了解决这些问题&#xff0…...

EtherCAT扫盲,都是知识点

1. 什么是EtherCAT EtherCAT,全称Ethernet for Control Automation Technology,字面意思就是用于控制自动化技术的以太网。它是一种基于以太网的实时工业通信协议,简单说,就是让机器们通过网线互相聊天的高级方式。 EtherCAT 是最…...

开发中遇到的错误 - @SpringBootTest 注解爆红

我在使用 SpringBootTest 注解的时候爆红了&#xff0c;ait 回车也导不了包&#xff0c;后面发现是因为没有加依赖&#xff1a; <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId>…...

数据仓库的实际应用示例-广告投放平台为例

数据仓库的数据分层通常包括以下几层&#xff1a; ODS层&#xff1a;存放原始数据&#xff0c;如日志数据和结构化数据。DWD层&#xff1a;进行数据清洗、脱敏、维度退化和格式转换。DWS层&#xff1a;用于宽表聚合值和主题加工。ADS层&#xff1a;面向业务定制的应用数据层。…...

Beyond VL了解学习

Beyond VL&#xff1a;多模态处理的前沿 在今天的数据驱动时代&#xff0c;我们经常需要处理和分析多种类型的数据&#xff0c;例如文本、图像、视频和音频。Beyond VL 是一个先进的多模态模型&#xff0c;专为处理这些多种数据而设计。它能够同时处理多种模态的数据&#xff…...

AI音乐革命:创意产业的新篇章

随着科技的飞速发展&#xff0c;人工智能&#xff08;AI&#xff09;在各个领域的应用越来越广泛&#xff0c;特别是在音乐产业中&#xff0c;AI音乐大模型的涌现&#xff0c;正在重新定义音乐创作的边界。最近一个月&#xff0c;随着多个音乐大模型的轮番上线&#xff0c;素人…...

python从入门到精通1:注释

在Python编程中&#xff0c;注释是一种非常重要的工具&#xff0c;它不仅可以帮助我们记录代码的目的、工作方式以及任何需要注意的地方&#xff0c;还可以使代码更具可读性。Python提供了两种主要的注释方式&#xff1a;单行注释和多行注释。下面我们将深入探讨这两种注释方式…...

CountDownLatch(应对并发问题的工具类)

CountDownLatch CountDownLatch允许一个或多个线程等待其他线程完成操作以后&#xff0c;再执行当前线程&#xff1b;比如我们在主线程需要开启2个其他线程&#xff0c;当其他的线程执行完毕以后我们再去执行主线程&#xff0c;针对这 个需求我们就可以使用CountDownLatch来进…...

HarmonyOS开发知识 :扩展修饰器,实现节流、防抖、权限申请

引言 防重复点击&#xff0c;利用装饰器面向切面&#xff08;AOP&#xff09;的特性结合闭包&#xff0c;实现节流、防抖和封装权限申请。 节流 节流是忽略操作&#xff0c;在触发事件时&#xff0c;立即执行目标操作&#xff0c;如果在指定的时间区间内再次触发了事件&…...

自然语言NLP的基础处理

NLP基本处理从句子的情感分析、实体与实体直接的关系&#xff0c;句子结构来分析 情感分析 1.句子的情感分析找出句子表达的是正面、负面还是中性的情感。 情感分析的影响因素&#xff1a; 词语顺序&#xff1a;词语的顺序可以影响句子的整体情感。例如&#xff0c;“我喜欢…...

带颜色的3D点云数据发布到ros1中(通过rviz显示)python、C++

ros中发布点云数据xyz以及带颜色的点云数据xyzrgb ros中发布点云数据xyz可以直接用python来做或者C(看个人偏好) ros中发布带颜色的点云数据xyzrgb环境1.新建ROS工作空间2.创建功能包 ros中发布点云数据xyz 可以直接用python来做或者C(看个人偏好) 在这里我们带有颜色的点云数…...

python学习—列表和元组

系列文章目录 python学习—合并TXT文本文件 python学习—统计嵌套文件夹内的文件数量并建立索引表格 python学习—查找指定目录下的指定类型文件 python学习—年会不能停&#xff0c;游戏抽签抽奖 python学习—循环语句-控制流 python学习—合并多个Excel工作簿表格文件 文章目…...

c++题目_水仙花数

水仙花数-普及-题目-ACGO题库 题目描述 求100-n中的水仙花数。一个数x&#xff0c;x的百位、十位、个位&#xff0c;分别用a、b、c来表示&#xff1b; 当a * a * a b * b * b c * c * c x时&#xff0c;x就被称为水仙花数。(n< 999) 输入格式 一行一个整数n 输出格式…...

使用 Iceberg、Tabular 和 MinIO 构建现代数据架构

现代数据环境需要一种新型的基础架构&#xff0c;即无缝集成结构化和非结构化数据、轻松扩展并支持高效的 AI/ML 工作负载的基础架构。这就是现代数据湖的用武之地&#xff0c;它为您的所有数据需求提供了一个中心枢纽。然而&#xff0c;构建和管理有效的数据湖可能很复杂。 这…...

jnp.linalg.norm

jnp.linalg.norm 是 JAX 中用于计算向量或矩阵的范数的函数。JAX 是一个用于高性能机器学习研究的 Python 库&#xff0c;它提供了与 NumPy 类似的 API&#xff0c;但支持自动微分和加速计算。jnp 是 JAX 的 NumPy 接口。 jnp.linalg.norm 的基本语法 jnp.linalg.norm(x, ord…...

20240621在飞凌的OK3588-C开发板的Buildroot系统中集成i2ctool工具

20240621在飞凌的OK3588-C开发板中打开i2ctool工具 2024/6/21 17:44 默认继承的i2c工具&#xff1a; rootrk3588-buildroot:/# rootrk3588-buildroot:/# i2c i2c-stub-from-dump i2cdump i2cset i2cdetect i2cget i2ctransfer rootrk3588-…...

ARM32开发--存储器介绍

知不足而奋进 望远山而前行 目录 文章目录 前言 存储器分类 RAM ROM EEPROM Flash 总结 前言 在现代计算机系统中&#xff0c;存储器扮演着至关重要的角色&#xff0c;不仅影响着数据的存取速度和稳定性&#xff0c;还直接关系到计算机系统的性能和应用场景的选择。存…...

Web服务器

自学python如何成为大佬(目录):https://blog.csdn.net/weixin_67859959/article/details/139049996?spm1001.2014.3001.5501 当在浏览器输入URL后&#xff0c;浏览器会先请求DNS服务器&#xff0c;获得请求站点的 IP 地址&#xff08;即根据URL地址“www.mingrisoft.com”获取…...

大语言模型-Transformer

目录 1.概述 2.作用 3.诞生背景 4.历史版本 5.优缺点 5.1.优点 5.2.缺点 6.如何使用 7.应用场景 7.1.十大应用场景 7.2.聊天机器人 8.Python示例 9.总结 1.概述 大语言模型-Transformer是一种基于自注意力机制&#xff08;self-attention&#xff09;的深度学习…...

Xshell远程连接Kali(默认 | 私钥)Note版

前言:xshell远程连接&#xff0c;私钥连接和常规默认连接 任务一 开启ssh服务 service ssh status //查看ssh服务状态 service ssh start //开启ssh服务 update-rc.d ssh enable //开启自启动ssh服务 任务二 修改配置文件 vi /etc/ssh/ssh_config //第一…...

黑马Mybatis

Mybatis 表现层&#xff1a;页面展示 业务层&#xff1a;逻辑处理 持久层&#xff1a;持久数据化保存 在这里插入图片描述 Mybatis快速入门 ![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/6501c2109c4442118ceb6014725e48e4.png //logback.xml <?xml ver…...

《从零掌握MIPI CSI-2: 协议精解与FPGA摄像头开发实战》-- CSI-2 协议详细解析 (一)

CSI-2 协议详细解析 (一&#xff09; 1. CSI-2层定义&#xff08;CSI-2 Layer Definitions&#xff09; 分层结构 &#xff1a;CSI-2协议分为6层&#xff1a; 物理层&#xff08;PHY Layer&#xff09; &#xff1a; 定义电气特性、时钟机制和传输介质&#xff08;导线&#…...

【项目实战】通过多模态+LangGraph实现PPT生成助手

PPT自动生成系统 基于LangGraph的PPT自动生成系统&#xff0c;可以将Markdown文档自动转换为PPT演示文稿。 功能特点 Markdown解析&#xff1a;自动解析Markdown文档结构PPT模板分析&#xff1a;分析PPT模板的布局和风格智能布局决策&#xff1a;匹配内容与合适的PPT布局自动…...

ESP32 I2S音频总线学习笔记(四): INMP441采集音频并实时播放

简介 前面两期文章我们介绍了I2S的读取和写入&#xff0c;一个是通过INMP441麦克风模块采集音频&#xff0c;一个是通过PCM5102A模块播放音频&#xff0c;那如果我们将两者结合起来&#xff0c;将麦克风采集到的音频通过PCM5102A播放&#xff0c;是不是就可以做一个扩音器了呢…...

C# 类和继承(抽象类)

抽象类 抽象类是指设计为被继承的类。抽象类只能被用作其他类的基类。 不能创建抽象类的实例。抽象类使用abstract修饰符声明。 抽象类可以包含抽象成员或普通的非抽象成员。抽象类的成员可以是抽象成员和普通带 实现的成员的任意组合。抽象类自己可以派生自另一个抽象类。例…...

MySQL 8.0 OCP 英文题库解析(十三)

Oracle 为庆祝 MySQL 30 周年&#xff0c;截止到 2025.07.31 之前。所有人均可以免费考取原价245美元的MySQL OCP 认证。 从今天开始&#xff0c;将英文题库免费公布出来&#xff0c;并进行解析&#xff0c;帮助大家在一个月之内轻松通过OCP认证。 本期公布试题111~120 试题1…...

【JavaSE】绘图与事件入门学习笔记

-Java绘图坐标体系 坐标体系-介绍 坐标原点位于左上角&#xff0c;以像素为单位。 在Java坐标系中,第一个是x坐标,表示当前位置为水平方向&#xff0c;距离坐标原点x个像素;第二个是y坐标&#xff0c;表示当前位置为垂直方向&#xff0c;距离坐标原点y个像素。 坐标体系-像素 …...

UR 协作机器人「三剑客」:精密轻量担当(UR7e)、全能协作主力(UR12e)、重型任务专家(UR15)

UR协作机器人正以其卓越性能在现代制造业自动化中扮演重要角色。UR7e、UR12e和UR15通过创新技术和精准设计满足了不同行业的多样化需求。其中&#xff0c;UR15以其速度、精度及人工智能准备能力成为自动化领域的重要突破。UR7e和UR12e则在负载规格和市场定位上不断优化&#xf…...

pikachu靶场通关笔记22-1 SQL注入05-1-insert注入(报错法)

目录 一、SQL注入 二、insert注入 三、报错型注入 四、updatexml函数 五、源码审计 六、insert渗透实战 1、渗透准备 2、获取数据库名database 3、获取表名table 4、获取列名column 5、获取字段 本系列为通过《pikachu靶场通关笔记》的SQL注入关卡(共10关&#xff0…...