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

深度剖析HTTP协议—GET/PUT请求方法的使用-构造请求的方法

活动发起人@小虚竹 想对你说:

这是一个以写作博客为目的的创作活动,旨在鼓励大学生博主们挖掘自己的创作潜能,展现自己的写作才华。如果你是一位热爱写作的、想要展现自己创作才华的小伙伴,那么,快来参加吧!我们一起发掘写作的魅力,书写出属于我们的故事。我们诚挚邀请你参加为期14天的创作挑战赛!

提醒:在发布作品前,请将不需要的内容删除。

各位看官,大家早安午安晚安呀~~~

如果您觉得这篇文章对您有帮助的话

欢迎您一键三连,小编尽全力做到更好
欢迎您分享给更多人哦

今天我们来学习-深度剖析HTTP协议—GET/PUT请求方法的使用-构造请求的方法

 2.HTTP的报文结构分析

请求和响应的报文结构大同小异

2.1.URL中各个字段的含义

片段标识符:

有的页面很长,就要分成很多片段,通过片段标识符就可以完成页面内部的跳转。(一般技术文档会这么搞。

关于 URLencode(就是转义字符,在UTF-8的基础上加上%)

像 / ? : 等这样的字符, 已经被url当做特殊意义理解了. 因此这些字符不能随意出现.

比如, 某个参数中需要带有这些特殊字符, 就必须先对特殊字符进行转义.

例子:我搜索C++

C++就会转义成为

一个中文字符由 UTF-8 或者 GBK 这样的编码方式构成, 虽然在 URL 中没有特殊含义, 但是仍然需要进行转义. 否则浏览器可能把 UTF-8/GBK 编码中的某个字节当做 URL 中的特殊符号然后就会造成解析错误

注意:

我们在使用URL的时候一定对query string 的内容进行urlcode操作,如果不处理号可能就会造成浏览器解析失败,导致请求无法正常进行!!!

2.2.HTTP协议请求方法(在请求头中):

看似很多方法,但是实际上我们一般只用到前两个(GET和POST),所以小编主要就是讲前两个

其中GET方法用的超过8成,POST自己占一成,其他方法公用一成(天下文才共十斗哈哈哈)

2.2.1.GET方法

GET方法的特点(一般用于获取数据,通常把要传给服务器的数据加到)

  • 首行的第一部分为 GET
  • URL 的 query string 可以为空, 也可以不为空.
  • body 可以为空,也可不不为空
  • GET请求是等幂的(建议)

2.2.2.POST方法

POST方法:一般用来登录或者上传文件(图片……)

这个就是在gitee上传头衔抓的包

上传头像的body比较长是因为:

图片本身就是二进制数据,此处把图片放到http请求中,往往要进行base64转码(针对二进制数据进行重新编码(转义)编码之后变成纯文本的数据。)

POST方法的特点

  • 首行的第一部分为 POST
  • URL 的 query string 一般为空 (也可以不为空)
  • body 部分一般不为空. body 内的数据格式通过 header 中的 Content-Type 指定. body 的长度由header 中的 Content-Length 指定.
  • POST请求一般是不幂等的

2.2.3GET方法和POST方法的区别

首先GET方法和POST没有本质区别(大家现在不是按照各个方法原本的语义来的)

但是还是有一定的差异,首先先给大家看几个相对正确的说法

但是接下来的说法就不对了

3.Header里面的一些键值对:

3.1.Content-Length和Content-Type

  • Content-Length:描述body中数据的长度
  • Content-Type:描述body数据的格式

只有请求中有body才会有这两个属性,GET请求一般没有body,POST请求中有body

Content-Length:确保了HTTP数据报的边界

  • 没有body的HTTP请求,直接用空行(分隔符)就把两个HTTP数据包分隔开来了
  • 有的,就加一个body数据的长度(确定这个数据报到哪里结束)

HTTP数据包在TCP的粘包问题也会得到很好的解决

HTTP在传输层极速依赖于TCP的,使用同一个TCP连接传输多个HTTP数据报,多个HTTP数据报就会在TCP缓冲区里面紧挨在一起,有了分隔符和COntent0-Length就明确了HTTP数据包之间的边界

Content-Type:

3.2.User-Agent(UA)

以前UA的主要功能,以及

  1. 以前,网页刚兴起的时候,很简单就是一些单纯的文字(浏览器功能也很原始)
  2. 然后,网页逐步发展,浏览器的功能也逐步升级可以支持图片,css(样式),js,多媒体,……(这个时候浏览器的迭代很快,但是新的浏览器诞生之后并不是全部占领市场,一般都是新老浏览器并存)
  3. 这个时候,网站开发者开发的时候就要考虑到不同版本的兼容性问题,我们就可以通过UA来区分不同版本的浏览器,譬如我第一代不支持图片,但是第二代支持图片(我们在开发网站的返回的网页时,给第二代返回一个图片,给第一代返回一个字符串——当前浏览器版本过低不支持显示图片,请升级到最新版本的浏览器)

现在UA主要的功能:
如今浏览器版本之间的差距就比较小了(UA的作用就没那么关键了),现在UA主要用来区分用户上网是PC端还是移动端

现在前端开发有个:“响应式网页”的编程技术同html可以很好的兼容不同的设备

什么是响应式网页编程呢?

响应式网页编程的关键就是让网页能够“感知”到设备的特性(比如屏幕大小),然后通过CSS和HTML的灵活布局,自动调整网页的外观和内容

就像手机上看一个16:9的图片竖着看的话就只能适应比例(只占据了屏幕的一小部分),但是电脑看就不用适应比例(电脑本身就是16:9)

3.3.Referer:描述了当前网页是从哪个网页跳转过来的

虽然是在网页上面,但是你在地址栏搜索或者点击搜藏中按钮都是内Referer的

拿我在百度搜索的抓包来看

referer一般是用来算钱的,可以把百度的referer的改成其他平台的referer,这样我们点击广告的钱就变成搜狗的了。这种情况以前很常见

一个事件就是“运营商劫持”

运营商可以在路由器上部署一些程序,就很容易获取到用户的HTTP请求并且进行修改~

所以这个时候就需要对HTTP协议进行加密,就算有人获取到了用户的HTTP请求,也无法进行解密(很困难)

3.4.Cookie

Cookie:浏览器在本地存储数据的一种方式。

现代浏览器设计时,会避免网页直接访问计算机的文件系统,因此,浏览器封装了操作文件的API,浏览器作为中间层,管理所有Cookie的读写操作。网页不能直接访问文件系统。

  1. Cookie里面放的都是一些键值对,一般是程序员自定义的(和query string差不多)。Coookie往往是从服务器返回的数据(也可以是页面自己生成的)
  2. Cookie存储在浏览器所在主机的硬盘上面,并且是按照域名进行存储的(每个域名下都有自己的Cookie,彼此之间不相互影响)

而且如今浏览器内部也嵌套了简单的数据库,也是一种本地存储的一种方式

4.HTTP响应首行中的状态码

状态码表

关于状态码418:

418状态码是HTTP RFC文档中专门规定的一个状态码,这个状态码没有实际的意义,是“彩蛋”的意思

3.如何构造一个HTTP请求?

  1. 直接在浏览器地址栏输入URL,就构造了一个请求(只不过我们没设定各个键值对),我们进行编程构造HTTP请求的时候大多数都是针对键值对做文章
  2. 通过一些特殊的html标签,触发HTTP请求(像img,a,link,script)
  3. 通过from表单只能构造GET和POST请求(from本质上也是一个HTML标签)
  4. ajax。通过js提供的api构造HTTP请求
  5. 通过图形化界面postman来构造请求(这个最方便)

接下来我们通过form表单的格式以及postman给大家演示一下from表单来构造GET/POST请求

但是一个前提是我们编写前端代码,要选择一个趁手的开发工具,我推荐VSCode,IDEA的话得是专业版的才行

VSCode下载路径

3.1.通过form表单的格式构造GET/POST请求

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>构造HTML的请求</html></HTml></title>
</head>
<body><form action="http://www.baidu.com/abc.html" method="get"><input type="text" name="key1"><input type="text" name="key2"><input type="text" name="key3"><input type="submit" value="提交"></form>
</body>
</html>

我们点击提交这个html页面

3.2.通过paotman构造HTTP请求

postman

具体步骤

如何构造?

然后我们点击send就构造好了

得到响应

最后,我们只要掌握了postman这个图形化的工具之后构造HTTP请求就完全不是问题了,还可以生成我们想要的格式的代码啦~~~

上述就是深度剖析HTTP协议—GET/PUT请求方法的使用-构造请求的方法的全部内容啦~~~

能看到这里相信您一定对小编的文章有了一定的认可。

有什么问题欢迎各位大佬指出
欢迎各位大佬评论区留言修正~~

您的支持就是我最大的动力​​​!!!

相关文章:

深度剖析HTTP协议—GET/PUT请求方法的使用-构造请求的方法

活动发起人小虚竹 想对你说&#xff1a; 这是一个以写作博客为目的的创作活动&#xff0c;旨在鼓励大学生博主们挖掘自己的创作潜能&#xff0c;展现自己的写作才华。如果你是一位热爱写作的、想要展现自己创作才华的小伙伴&#xff0c;那么&#xff0c;快来参加吧&#xff01…...

GPU算力哪家好?GpuGeek推出高性能GPU云服务

在人工智能和深度学习领域&#xff0c;GPU算力租赁已成为推动技术创新的关键因素。随着越来越多的企业和个人开发者投身于AI研究和应用开发&#xff0c;如何高效、灵活地获取GPU算力成为了一个亟待解决的问题。GpuGeek作为一站式AI基础设施平台&#xff0c;凭借其独特的优势&am…...

蓝桥杯算法实战分享

蓝桥杯算法实战分享 蓝桥杯是国内知名的程序设计竞赛&#xff0c;涵盖算法、数据结构、编程技巧等多个领域。本文将从实战角度分享蓝桥杯算法竞赛的常见题型、解题思路和优化技巧&#xff0c;帮助参赛者更好地备战。 1. 常见题型与解题思路 蓝桥杯的题型主要包括以下几类&…...

【每日算法】Day 9-1:贪心算法精讲——区间调度与最优选择(C++实现)

掌握高效决策的核心思想&#xff01;今日深入解析贪心算法的底层逻辑&#xff0c;聚焦区间调度与最优选择两大高频场景&#xff0c;结合大厂真题与严谨证明&#xff0c;彻底掌握“局部最优即全局最优”的算法哲学。 一、贪心算法核心思想 贪心算法&#xff08;Greedy Algorit…...

构建稳健的机器学习系统:应对数据偏移挑战

构建稳健的机器学习系统&#xff1a;应对数据偏移挑战 1. 引言&#xff1a;数据偏移类型与挑战 在机器学习系统从实验室到生产环境的转变过程中&#xff0c;数据偏移&#xff08;Data Shift&#xff09;是最常见也最具挑战性的问题之一。所谓数据偏移&#xff0c;指的是训练数…...

从零构建大语言模型全栈开发指南:第二部分:模型架构设计与实现-2.1.3前馈网络(FFN)与激活函数(GELU)优化

👉 点击关注不迷路 👉 点击关注不迷路 👉 点击关注不迷路 文章大纲 2.1.3 前馈网络(FFN)与激活函数(GELU)优化1. 前馈网络(FFN)的架构设计与数学原理1.1 FFN在Transformer中的核心作用2. GELU激活函数的数学特性与优化2.1 GELU的数学形式与近似计算3. 逐行代码实现…...

3个版本的Unity项目的异同

根据搜索结果&#xff0c;以下是关于 SPR 3D Sample Scene(URP)、SPR Universal 3D 和 3D(Built-In Render Pipeline) 的定义及区别分析&#xff1a; 1. 定义与用途 SPR 3D Sample Scene(URP) 是基于 Universal Render Pipeline (URP) 的 3D 示例场景&#xff0c;专为展示 URP …...

组态软件之万维组态介绍(web组态、html组态、vue2/vue3组态、组态软件、组态编辑器)

一、什么是组态软件 组态软件是一种用于创建、配置和管理监控和控制系统的软件工具。组态是指不需要编写计算机程序、通过配置的方式完成工业应用开发的系统。它们通常用于工业自动化领域&#xff0c;用于实时监视和控制工业过程。组态软件提供了丰富的功能和工具&#xff0c;使…...

Linux系统perf命令使用介绍,如何用此命令进行程序热点诊断和性能优化

Linux perf 命令使用指南&#xff1a;程序热点诊断与性能优化 perf 是 Linux 系统上一个强大的性能分析工具&#xff0c;它能够帮助开发者进行程序热点诊断和性能优化。下面详细介绍 perf 的使用方法。 1. perf 简介 perf (Performance Event Counters) 是 Linux 内核提供的…...

《Linux运维实战:Ubuntu 22.04使用pam_faillock实现登录失败处理策略》

总结&#xff1a;整理不易&#xff0c;如果对你有帮助&#xff0c;可否点赞关注一下&#xff1f; 更多详细内容请参考&#xff1a;Linux运维实战总结 一、背景信息 在ubuntu 22.04中&#xff0c;pam_tally2模块已被弃用&#xff0c;取而代之的是pam_faillock模块。因此&#xf…...

AI Agent开发大全第八课-Stable Diffusion 3的本地安装全步骤

前言 就像我们前面几课所述,本系列是一门体系化的教学,它不像网上很多个别存在的单篇博客走“吃快餐”模式,而是从扎实的基础来带领大家一步步迈向AI开发高手。所以我们的AI课程设置是相当全面的,除了有牢固的基础知识外还有外面互联网上也搜不到的生产级实战。 前面讲过…...

Spring MVC 深度解析:原理、源码剖析与实战

Spring MVC 深度解析&#xff1a;原理、源码剖析与实战 在 Spring 体系中&#xff0c;Spring MVC 作为 Web 层的核心框架&#xff0c;承担着请求处理、参数解析、视图渲染等关键任务。今天&#xff0c;我们将深入剖析 Spring MVC 的执行流程&#xff0c;结合 源码分析&#xf…...

347 前k个高频元素

步骤1&#xff1a;统计元素频率 使用哈希表&#xff08;unordered_map&#xff09;统计每个元素的出现次数&#xff0c;时间复杂度为 O(n)。 步骤2&#xff1a;构建最小堆维护Top K 优先队列&#xff08;最小堆&#xff09;&#xff1a;用priority_queue维护当前频率最高的k…...

BUUCTF-web刷题篇

1.EASYSQL破解密码 万能公式&#xff1a; 1 and 11 1 and 11 1 or 11 1 or 11 解释&#xff1a;payload SELECT * FROM tables WHERE username1 or 11 and password1 or 11 优先级排序&#xff1a;and 优先级高于 or&#xff0c;所以要计算 and 然后再计算 or username1…...

LeetCode 第31~33题

目录 LeetCode 第31题&#xff1a;下一个排列 LeetCode 第32题&#xff1a;最长有效括号 LeetCode 第33题&#xff1a;搜索旋转排序数组 LeetCode 第31题&#xff1a;下一个排列 题目描述 整数数组的一个排列就是将所有成员以序列或线性顺序排列。例如arr[1,2,3]&#xff0c;以…...

【NLP 44、实践 ⑪ 用Bert模型结构实现自回归语言模型的训练】

目录 数据文件 一、模型定义 1.模型初始化 代码运行流程 2.前向传播&#xff0c;计算损失 ⭐ 代码运行流程 二、加载语料 代码运行流程 三、 随机生成样本 代码运行流程 四、建立模型 五、采样策略选择 代码运行流程 六、模型效果测试 代码运行流程 七、模型训练 代码运行流程 …...

Go 语言规范学习(1)

文章目录 IntroductionNotation示例&#xff08;Go 语言的 if 语句&#xff09;&#xff1a; Source code representationCharacters例子&#xff1a;变量名可以是中文 Letters and digits Lexical elementsCommentsTokensSemicolons例子&#xff1a;查看程序所有的token Ident…...

ShapeCrawler:.NET开发者的PPTX操控魔法

引言 在当今的软件开发领域&#xff0c;随着数据可视化和信息展示需求的不断增长&#xff0c;处理 PPTX 文件的场景日益频繁。无论是自动化生成报告、批量制作演示文稿&#xff0c;还是对现有 PPT 进行内容更新与格式调整&#xff0c;开发者都需要高效的工具来完成这些任务。传…...

微信小程序如何接入直播功能

一、小程序直播开通背景 1.政府资质要求 政府的要求&#xff0c;小程序开通直播需要注册主体具备互联网直播的资质&#xff0c;普通企业需要《信息网络传播视听节目许可证》&#xff0c;表演性质的直播需要《网络文化经营许可证》&#xff0c;政府主体需要《社会信用代码》及…...

ArrayList<E>案例//定义一个方法,将价格低于3000的手机信息返回

import java.util.ArrayList;public class ArrayListphone {public static void main(String[] args){//定义一个方法&#xff0c;将价格低于3000的手机信息返回Phone p1new Phone("小米",1000);Phone p2new Phone("苹果",8000);Phone p3new Phone("锤…...

基于Spring Boot的停车场管理系统的设计与实现(LW+源码+讲解)

专注于大学生项目实战开发,讲解,毕业答疑辅导&#xff0c;欢迎高校老师/同行前辈交流合作✌。 技术范围&#xff1a;SpringBoot、Vue、SSM、HLMT、小程序、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、安卓app、大数据、物联网、机器学习等设计与开发。 主要内容&#xff1a;…...

慧通测控汽车智能座舱测试技术

一、引言 随着科技的飞速发展&#xff0c;汽车正从单纯的交通工具向智能化移动空间转变。智能座舱作为这一转变的核心体现&#xff0c;融合了多种先进技术&#xff0c;为用户带来前所未有的驾驶体验。从简单的信息娱乐系统到高度集成的人机交互、智能驾驶辅助以及车辆状态监测…...

Qt进程间通信:QSharedMemory 使用详解

1. 什么是 QSharedMemory&#xff1f; QSharedMemory 是 Qt 中用于进程间共享内存的类。它允许多个进程共享一块内存区域&#xff0c;从而避免数据传输时的 IO 操作&#xff0c;提高通信速度。通过共享内存&#xff0c;多个进程可以直接读写这块内存&#xff0c;而无需经过文件…...

kettle插件-rabbitmq插件

场景&#xff1a;kettle本身可以直接链接rabbitmq&#xff0c;但是需要配置rabbitmq开启mqtt协议&#xff0c;本次讲解下自定义开发组件RabbitMQ consumer&#xff0c;无需开启mqtt协议即可使用。 1、docker 安装rabbitmq 1&#xff09;下载镜像 docker pull rabbitmq 2&…...

为Windows10的WSL Ubuntu启动sshd服务并使用Trae远程连接

Windows10的WSL Ubuntu&#xff0c;使用起来非常方便&#xff0c;但是美中不足的是&#xff0c;无法从Windows主机ssh到Ubuntu 。 解决的方法是在Ubuntu安装sshd服务 Ubuntu安装sshd服务 执行命令 sudo apt install openssh-server 安装好后&#xff0c;先本地测试&#x…...

【C#.NET】VS2022创建Web API项目

C# Web API 是一种基于 .NET 平台&#xff08;包括但不限于.NET Framework 和 .NET Core&#xff09;构建 HTTP 服务的框架&#xff0c;用于创建 RESTful Web 服务。REST&#xff08;Representational State Transfer&#xff09;是一种软件架构风格&#xff0c;它利用HTTP协议…...

体育直播系统趣猜功能开发技术实现方案

功能概述 趣猜功能是“东莞梦幻网络科技”体育直播系统源码中的互动功能&#xff0c;主播可以发起竞猜题目&#xff0c;观众使用虚拟货币进行投注&#xff0c;增加直播间的互动性和趣味性。所有货币均为虚拟货币&#xff0c;通过系统活动获取&#xff0c;不可充值提现。 数据…...

33.[前端开发-JavaScript基础]Day10-常见事件-鼠标事件-键盘事件-定时器-案例

1 window定时器 window定时器方法 setTimeout的使用 setInterval的使用 2 轮播消息提示 案例实战一 – 轮播消息提示 3 关闭隐藏消息 案例实战二 – 关闭隐藏消息 4 侧边栏展示 案例实战三 – 侧边栏展示 5 tab切换实现 案例实战四 – 登录框&#xff08;作业&#xff09;…...

C# 多标签浏览器 谷歌内核Csharp

采用框架 &#xff1a;FBrowserCEF3lib 视频演示&#xff1a;点我直达 成品下载&#xff1a; https://wwms.lanzouo.com/iYOd42rl8vje...

如何同步fork的更新

当你fork了一个代码仓库后&#xff0c;要将其与原始源码保持同步&#xff0c;可以按照以下步骤进行操作&#xff1a; 1. 添加原始仓库作为远程源 在本地命令行中&#xff0c;进入到你fork后的代码仓库目录&#xff0c;然后使用以下命令添加原始仓库&#xff08;通常称为upstr…...