【基础知识】HTTP协议中“POST“和“GET”两种请求方式区别

0x01:两种方法对比

在我们客户端与服务器之间进行请求和响应的时候,最常用的两种方法是:GET和POST

POST —— 向指定的资源提交要被处理的数据。

GET —— 向指定的资源请求数据

GET请求参数呢一般显示在URL上面

POST请求参数是在请求体里面,而不是在URL上面,相对于GET,更具有隐蔽性。

0x02:POST请求

POST请求的一个具体例子可以是用户注册的场景。当用户在一个网站上填写注册表单时,通常需要输入用户名、密码、邮箱等信息。当用户点击提交按钮后,这些信息会通过POST请求发送到服务器进行处理。

在这个过程中,浏览器会构建一个包含注册信息的POST请求。请求头中会指定请求方法为POST,以及请求的URL地址(通常是处理注册的服务器接口)。请求体则会包含用户填写的表单数据,这些数据通常以键值对的形式存在。

一个POST请求包一般包含以下几个部分:

  1. 请求行:这是数据包的第一行,包含请求方法(在这个例子中是POST)、请求的资源路径(即目标URL)以及HTTP协议的版本和类型。例如,请求行可能类似于“POST /register HTTP/1.1”,其中“/register”是用户想要访问的服务器上的特定资源或页面。

  2. 消息头:消息头包含了若干键值对,这些键值对由w3c定义,具有特殊的含义。它们描述了请求的各种属性,如内容类型(Content-Type)、字符集(Charset)、客户端类型(User-Agent)等。对于POST请求,通常还会包含描述请求体长度的Content-Length头。这些消息头有助于服务器正确解析和处理请求。

  3. 请求体:这是POST请求数据包的核心部分,包含了实际要发送给服务器的数据。对于用户注册的场景,请求体可能包含用户填写的表单数据,如用户名、密码、邮箱等。这些数据通常以特定的格式编码,如application/x-www-form-urlencoded或multipart/form-data(用于文件上传)。

如下就是一个POST的一个请求包,他的参数在最下面请求体里面。

POST /register HTTP/1.1

Host: www.example.com

Content-Type: application/x-www-form-urlencoded

Content-Length: 31

username=张三&password=123456&email=zhangsan@example.com
  • 请求行指定了使用POST方法,目标资源路径是“/register”,并且使用的是HTTP/1.1协议。
  • 消息头中包含了Host、Content-Type和Content-Length等字段,用于描述请求的属性。
  • 请求体则包含了表单数据,这些数据已经被编码为“application/x-www-form-urlencoded”格式,并通过“&”符号分隔不同的字段。

实际的POST请求数据包可能会更复杂,包含更多的消息头和请求体数据,具体取决于应用程序的需求和HTTP协议的实现。

0x03:GET请求

GET请求主要用于从服务器获取资源。它通过URL传递参数,并返回服务器响应的数据。GET请求是一种无状态、幂等的请求方法,适用于无副作用的操作,如展示网页内容、读取数据、搜索等。它经常用于浏览器URL的地址栏中。

如下就是一个GET的一个请求包,它的参数在URL地址后面。

GET /search?keyword=apple&page=1 HTTP/1.1  
Host: www.example.com  
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.45 Safari/537.36  
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9  
Accept-Encoding: gzip, deflate  
Accept-Language: en-US,en;q=0.9
  • 请求行GET /search?keyword=apple&page=1 HTTP/1.1,指定了使用GET方法,请求的URL地址是/search,并附加了查询参数keyword=applepage=1
  • 请求头部:包含了关于请求的各种信息,如Host指定了请求的主机名,User-Agent描述了发出请求的浏览器类型和版本,Accept表示客户端接受的响应内容类型,Accept-EncodingAccept-Language分别表示客户端接受的编码方式和语言。

请注意,GET请求通常不包含请求体,因为GET请求是用来从服务器获取数据的,而不是发送数据。附加的参数是通过URL的查询字符串(即?后面的部分)来传递的。

此外,实际的GET请求数据包可能还包含其他请求头部字段,具体取决于客户端和服务器之间的通信需求。同时,HTTP请求和响应的详细格式和内容可能因HTTP版本和特定实现的不同而有所差异

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

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

相关文章

电阻的妙用:限流、分压、滤波,助力电路设计!

电阻可以降低电压,这是通过电阻的分压来实现的。事实上,利用电阻来降低电压只是电阻的多种功能之一。电路中的电阻与其他元件(电容、电感)结合用于限流、滤波等。(本文素材来源:https://www.icdhs.com/news…

七段码(蓝桥杯)

文章目录 七段码题目描述答案:80分析编程求解:有多种方法方法一:状态压缩枚举构图(以二极管为顶点)DFS判断连通代码方法二:bfs 七段码 题目描述 小蓝要用七段码数码管来表示一种特殊的文字。 上图给出了…

win11 环境配置 之 Jmeter

一、安装 JDK 1. 安装 jdk 截至当前最新时间: 2024.3.27 jdk最新的版本 是 官网下载地址: https://www.oracle.com/java/technologies/downloads/ 建议下载 jdk17 另存为到该电脑的 D 盘下,新建jdk文件夹 开始安装到 jdk 文件夹下 2. 配…

自动化测试框架Taffy

Taffy Taffy是基于nosetests的自动化测试框架。 Taffy主要用来测试后台服务(包括且不限于Http, Dubbo/hessian, Webservice, Socket等类型接口),也可集成Selenium, Appium进行WEB或APP的自动化测试,或集成locust进行性能测试。 Taffy封装实现了结果对…

Typora 主题配置

title: Typora主题配置 search: 2024-03-19 tags: “#Typora主题” Typora 主题配置 文章目录 Typora 主题配置Step-1 进入官方主题网站Step-2 选中主题,并点击DownloadStep-3 跳转到 github 网站Step-4 直接下载源码Step-5 解压下载的源码Step-6 找到下载源码中的…

搜索树概念及操作

目录 一. .搜索树 1.1 概念 1.2 操作1 查找 1.3 操作2 插入 1.4 操作3 删除 1.5 性能分析 1.6 和 java 类集的关系 一. .搜索树 1.1 概念 二叉搜索树又称二叉排序树,它或者是一棵空树,或者是具有以下性质的二叉树 : 若它的左子树不为空&#x…

Automatic Prompt Engineering

让大模型自己生成prompt,生成提示(prompt)存在两种不同的操作方式。第一种方式是在文本空间中进行,这种提示以离散的文本形式存在。第二种方式是将提示抽象成一个向量,在特征空间中进行操作,这种提示是抽象…

二进制日志备份与恢复

二进制备份是 MySQL 数据库备份的一种方式,它通过记录数据库的所有更改操作,以二进制格式保存,实现对数据库的增量备份和恢复。binlog_format 是 MySQL 中用来指定二进制日志格式的参数,有三种常见的选项:STATEMENT、R…

【PLC】PROFIBUS(二):总线协议DP、PA、FMS

1、总线访问协议 (FDL) 1.1、多主通信 多个主设备间,使用逻辑令牌环依次向从设备发送命令。 特征: 主站间使用逻辑令牌环、主从站间使用主从协议主站在一个限定时间内 (Token Hold Time) 对总线有控制权从站只是响应一个主站的请求它们对总线没有控制…

spring-boot-devtools配置和原理

一、前言 昨天,一个同事Eclipse在启动SpringBoot项目时一直不停地加载,后来发现是因为spring-boot-devtools造成的问题,因为我们把日志输出的目录设置在当前项目里(~/mnt/logs/,这样设置是因为mac电脑没有根目录权限&…

Django之Web应用架构模式

一、Web应用架构模式 在开发Web应用中,有两种模式 1.1、前后端不分离 在前后端不分离的应用模式中,前端页面看到的效果都是由后端控制,由后端渲染页面或重定向,也就是后端需要控制前端的展示。前端与后端的耦合度很高 1.2、前后端分离 在前后端分离的应用模式中,后端仅返…

树状数组的三种代码模板

下标从一开始。 所有奇数等于本身,偶数/2等于所在层数。 二进制末尾有几个0就在第几层。 每一个树状数组中表示的都是这么一个区间的和,左开右闭。 写成lowbit(x),返回的就是2^k,k就是末尾有几个0。 这是求和代码 单点修改 这是…

案例 | 华院计算x第一财经:我和我的数智人唱双簧

创新关乎命运,科技引领未来。生成式人工智能(AIGC)给传媒行业发展带来严峻挑战的同时,也带来千载难逢的重大发展机遇。2024年政府工作报告中提出,要深化大数据、人工智能等研发应用,开展“人工智能”行动,打造具有国际…

龙泉寺扫地僧:十年坚持打造轻量级浏览器内核

王斌,网名龙泉寺扫地僧。作为一个独立开发者,他专注于浏览器内核研究十余年。他主要从事 MiniBlink 项目的工作,旨在创建一个精简且高效的浏览器内核,应对 Chromium 庞大的体积和内存占用问题。 龙泉寺扫地僧在谈及做 MiniBlink 的…

10个你必须知道的浏览器指纹检测工具,保护你的隐私安全

在当前的数字时代,个人隐私保护变得越来越重要,特别是对于互联网用户来说。有一种叫做“浏览器指纹”的技术,它能悄悄收集我们使用的浏览器和设备的各种细节信息。这本是为提供个性化服务,但对那些需要在不同平台同时管理多个账号…

11.数据库技术(下)

1.select语句 中括号表示可有可无; 尖括号表示变量名; 分组后再筛选,用having;分组前筛选,用where; select后跟随的所有列,除聚集函数外,都需要列在group by后; 注&…

【比特币】比特币的奥秘、禁令的深层逻辑与风云变幻

导语: 比特币(Bitcoin),这个充满神秘色彩的数字货币,自诞生以来便成为各界瞩目的焦点。它背后所蕴含的Mining机制、禁令背后的深层逻辑以及市场的风云变幻,都让人欲罢不能。今天,我们将深入挖掘比特币的每一个角落&…

HarmonyOS应用/元服务发布流程

在发布HarmonyOS应用/元服务前,建议您在本地进行调试,以查看和验证应用/元服务运行效果,减少发布过程中可能遇到的问题。 华为支持您使用HUAWEI DevEco Studio自动化签名的方式对应用/元服务进行调试,总体流程如下。 配置签名信息…

蓝桥杯练习系统(算法训练)ALGO-967 共线

资源限制 内存限制:256.0MB C/C时间限制:1.0s Java时间限制:3.0s Python时间限制:5.0s 问题描述 给定2维平面上n个整点的坐标,一条直线最多能过几个点? 输入格式 第一行一个整数n表示点的个数   …

c语言--跳出continue、break

C 语言中的 continue 语句有点像 break 语句。但它不是强制终止,continue 会跳过当前循环中的代码,强迫开始下一次循环。 对于 for 循环,continue 语句执行后自增语句仍然会执行。对于 while 和 do…while 循环,continue 语句重新…