HTTP请求行详解

news2024/11/24 7:34:08

目录

一、认识URL

二、认识方法

2.1 GET方法

2.2 POST方法

2.3 其他方法


请求行也就是HTTP请求的第一行,接下来将对第一行内容进行详细解释

一、认识URL

平时我们俗称的 "网址" 其实就是说的 URL (Uniform Resource Locator 统一资源定位符)。互联网上的每个文件都有一个唯一的URL,它包含的信息指出文件的位置以及浏览器应该怎么处理它。

一个具体的URL:

https://mp.csdn.net/mp_blog/creation/editor?spm=1001.2014.3001.4503 

这里可以明显的看出,这个URL相比于上述图表中的URL有些信息是被省略了的

  • https:协议方案名。常见的有http、https,也有mysql的(jdbc:mysql)
  • user:pass : 登陆信息。现在的网站进行身份认证一般不再通过 URL 进行了,一般都会省略
  • mp.csdn.net : 服务器地址。此处是一个 "域名",域名会通过 DNS 系统解析成一个具体的 IP 地址。
  • 端口号: 上面的 URL 中端口号被省略了。当端口号省略的时候,浏用览器会根据协议类型自动决定使用哪个端口。http 协议默认使用 80 端口,https 协议默认使 443 端口。
  • mp_blog/creation/editor: 带层次的文件路径。
  • spm=1001.2014.3001.4503 :查询字符串(query string)。本质是一个键值对结构。键值对之间使用 & 分隔。键和值之间使用 = 分隔。
  • 片段标识: 此 URL 中省略了片段标识。片段标识主要用于页面内跳转。

关于query string

query string 中的内容是键值对结构。其中的 key 和 value 的取值和个数,完全都是程序猿自己约定的。我们可以通过这样的方式来自定制传输我们需要的信息给服务器。

URL 中的可省略部分

  • 协议名: 可以省略,省略后默认为 http://
  • ip 地址 / 域名: 在 HTML 中可以省略(比如 img,link,script,a 标签的 src 或者 href 属性)。省略后表示服务器的 ip / 域名与当前 HTML 所属的 ip / 域名一致。
  • 端口号: 可以省略. 省略后如果是 http 协议,端口号自动设为 80;如果是 https 协议,端口号自动设为 443。
  • 带层次的文件路径: 可以省略。省略后相当于 / 。有些服务器会在发现 / 路径的时候自动访问/index.html
  • 查询字符串: 可以省略
  • 片段标识: 可以省略

关于 URL encode

/ ? : 等这样的字符,已经被url当做特殊意义理解了。因此这些字符不能随意出现。比如, 某个参数中需要带有这些特殊字符,就必须先对特殊字符进行转义。这里的转义器直接在浏览器上搜索一个就可以了。

二、认识方法

2.1 GET方法

GET方法是最常见的HTTP方法,多用于向服务器获取某个资源。在浏览器中直接输入一个URL,此时浏览器就会发送一个GET请求。另外,HTML中的link,img,script等标签,也会触发GET请求。 

使用Fiddler进行抓包,具体的观察GET请求的详细结果

GET请求的特点

  • 首行的第一部分为 GET
  • URL中的 query string 可以为空也可以不为空,其中URL的长度是没有限制的
  • header 中有若干个键值对结构
  • body部分为空(这里的body是可以为空或者不为空的,一般是为空的)

2.2 POST方法

POST 方法也是一种常见的方法。多用于提交用户输入的数据给服务器(例如登陆页面)。通过 HTML 中的 form 标签可以构造 POST 请求,或者使用 JavaScript 的ajax也可以构造 POST 请求

使用Fiddler进行抓包,具体的观察POST请求的详细结果

POST请求的特点 

  • 首行的第一部分为 POST
  • URL 的 query string 一般为空 (也可以不为空)
  • header 部分有若干个键值对结构
  • body 部分一般不为空。body 内的数据格式通过 header 中的 Content-Type 指定。 body 的长度由header 中的 Content-Length 指定。

GET和POST的区别

  • 二者没有本质的区别
  • 语义不同:GET一般用于向服务器获取数据,POST一般用于向服务器提交数据
  • GET的body一般为空,传输数据一般通过query string传递。POST的query string一般为空,传输数据一般通过body传递。
  • GET的请求一般是幂等的,POST的请求一般是不幂等的(如果多次请求的结果是一致的,那么说这个请求是幂等的)
  • GET可以被缓存,POST不能被缓存(这也是由于幂等性)

补充说明

  • 关于语义: GET 完全可以用于提交数据,POST 也完全可以用于获取数据
  • 关于幂等性:标准建议 GET 实现为幂等的。实际开发中 GET 也不必完全遵守这个规则(主流网站都有 "猜你喜欢" 功能,会根据用户的历史行为实时更新现有的结果)。
  • 关于安全性:有些资料上说 "POST 比 GET 请安全". 这样的说法是不科学的. 是否安全取决于前端在传输密码等敏感信息时是否进行加密, 和 GET POST 无关.
  • 关于传输数据量:有的资料上说 "GET 传输的数据量小,POST 传输数据量大"。这个也是不科学的,标准没有规定 GET 的 URL 的长度,也没有规定 POST 的 body 的长度。传输数据量多少,完全取决于不同浏览器和不同服务器之间的实现区别。
  • 关于传输数据类型:有的资料上说 "GET 只能传输文本数据,POST 可以传输二进制数据"。这个也是不科学的。GET 的 query string 虽然无法直接传输二进制数据, 但是可以针对二进制数据进行 url encode。

2.3 其他方法

  • PUT 与 POST 相似,只是具有幂等特性,一般用于更新
  • DELETE 删除服务器指定资源
  • OPTIONS 返回服务器所支持的请求方法
  • HEAD 类似于GET,只不过响应体不返回,只返回响应头
  • TRACE 回显服务器端收到的请求,测试的时候会用到这个
  • CONNECT 预留,暂无使用

这些方法的 HTTP 请求可以使用 ajax 来构造. (也可以通过一些第三方工具)

任何一个能进行网络编程的语言都可以构造 HTTP 请求。本质上就是通过 TCP socket 写入一个符合 HTTP 协议规则的字符串

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

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

相关文章

利用哈希表封装unordered_map和unordered_set

目录 一、迭代器1.1 普通迭代器1.1.1 operator 1.2 const迭代器1.3 代码实现 二、封装unordered_set三、封装unordered_map 一、迭代器 1.1 普通迭代器 1.1.1 operator 对于哈希桶结构,它的迭代器应该如何设计呢?我们仅封装一个Node的指针就行了吗&am…

扬帆配资:首个国家层面电力现货市场 建设规则出炉

9月18日,国家发改委、国家动力局发布了已于近日印发的《电力现货商场底子规则(试行)》(下称《规则》),作为国家层面的首个电力现货商场制作规则文件,推进构建全国一致电力商场系统。 扬帆配资&…

VB过程的递归调用,辗转相除法求最大公约数

VB过程的递归调用,辗转相除法求最大公约数 过程的递归调用,辗转相除法求最大公约数 Private Function gys(ByVal m%, ByVal n%) As IntegerDim r%r m Mod n m大或者n大都无所谓,这个不影响计算,由于辗转相除法的算法&#xff0c…

高阶数据结构——图

图 图的基本概念 图的基本概念 图是由顶点集合和边的集合组成的一种数据结构&#xff0c;记作 G ( V , E ) G(V, E)G(V,E) 。 有向图和无向图&#xff1a; 在有向图中&#xff0c;顶点对 < x , y >是有序的&#xff0c;顶点对 < x , y > 称为顶点 x 到顶点 y 的…

Weblogic反序列化漏洞(CVE-2018-2628/CVE-2023-21839复现)

内容目录 Weblogic反序列化漏洞(CVE-2018-2628/CVE-2023-21839)weblogic中间件CVE-2018-2628漏洞描述影响版本漏洞复现修复方案 CVE-2023-21839漏洞描述影响版本漏洞复现修复方案 Weblogic反序列化漏洞(CVE-2018-2628/CVE-2023-21839) weblogic中间件 WebLogic是美国Oracle公司…

Day 00 python基础认识与软件安装

1、基础认识 首先&#xff0c;我们先来区分、了解一些知识点 编程&#xff0c;编程语言 编程&#xff1a;用代码写一个程序 编程语言&#xff1a;用那种语法规则编写程序 &#xff08;人与计算机之间进行交流的工具&#xff1a;c、c、java、python、php、go……&am…

win系统环境搭建(四)——Windows安装mysql8压缩包版本

windows环境搭建专栏&#x1f517;点击跳转 win系统环境搭建&#xff08;四&#xff09;——Windows安装mysql8压缩包版本 本系列windows环境搭建开始讲解如何给win系统搭建环境&#xff0c;本人所用系统是腾讯云服务器的Windows Server 2022&#xff0c;你可以理解成就是你用…

openGauss学习笔记-74 openGauss 数据库管理-创建和管理视图

文章目录 openGauss学习笔记-74 openGauss 数据库管理-创建和管理视图74.1 背景信息74.2 管理视图74.2.1 创建视图74.2.2 查询视图74.2.3 查看某视图的具体信息74.2.4 删除视图 openGauss学习笔记-74 openGauss 数据库管理-创建和管理视图 74.1 背景信息 当用户对数据库中的一…

64位Ubuntu20.04.5 LTS系统安装32位运行库

背景&#xff1a; 在ubutu&#xff08;版本为20.04.5 LTS&#xff09;中运行./arm-none-linux-gnueabi-gcc -v 后提示“no such device”。 经多方查证&#xff0c;是ubutu的版本是64位的&#xff0c;而需要运行的编译工具链是32位的&#xff0c;因此会不兼容。 解决方法就是在…

ScheduledThreadPoolExecutor源码分析-延时线程池是如何实现延时执行的

ScheduledThreadPoolExecutor 线程池可以实现任务延时执行&#xff0c;那么它是怎么实现的呢&#xff1f;下面笔者进行详细分析 先看看它是怎么使用的 目录 1、延时执行使用 2、源码分析 2.1、ScheduledThreadPoolExecutor 初始化分析 2.2、ScheduledThreadPoolExecutor 执…

java项目之咖啡馆管理系统ssm+jsp

风定落花生&#xff0c;歌声逐流水&#xff0c;大家好我是风歌&#xff0c;混迹在java圈的辛苦码农。今天要和大家聊的是一款基于ssm的咖啡馆管理系统。技术交流和部署相关看文章末尾&#xff01; 开发环境&#xff1a; 后端&#xff1a; 开发语言&#xff1a;Java 框架&am…

Netty2

文章目录 Netty2Netty入站与出站机制Netty的handler链的调用机制 Netty2 Netty入站与出站机制 基本说明&#xff1a; 1&#xff09;netty的组件设计&#xff1a;Netty的主要组件有Channel&#xff0c;EventLoop&#xff0c;ChannelFuture&#xff0c;ChannelHandler&#xff…

[golang gui]fyne框架代码示例

1、下载GO Go语言中文网 golang安装包 - 阿里镜像站(镜像站使用方法&#xff1a;查找最新非rc版本的golang安装包) golang安装包 - 中科大镜像站 go二进制文件下载 - 南京大学开源镜像站 Go语言官网(Google中国) Go语言官网(Go团队) 截至目前&#xff08;2023年9月17日&#x…

中秋猜灯谜小游戏

中秋猜灯谜小游戏是一个基于HTML制作的互动游戏&#xff0c;旨在增添中秋节的欢乐氛围&#xff0c;通过猜灯谜来娱乐和挑战玩家。 目录 前言简介游戏规则 制作过程HTML 结构CSS 样式JavaScript 交互 功能实现题目和答案的存储游戏逻辑设计 前言 简介 游戏开始时&#xff0c;玩…

SpringBoot Admin监控平台《二》基础报警设置

一、前置准备 首先搭建监控一个平台和连个客户端&#xff0c;搭建流程见SpringBoot Admin监控平台《一》平台搭建及基础介绍 &#xff0c;搭建完毕之后&#xff0c;启动各个项目&#xff0c;监控平台的界面如下所示&#xff1a; 二、邮件报警 2.1.邮箱授权码获取 授权码主要…

5.5V-65V Vin同步降压控制器,具有线路前馈SCT82630DHKR

描述&#xff1a; SCT82630是一款65V电压模式控制同步降压控制器&#xff0c;具有线路前馈。40ns受控高压侧MOSFET的最小导通时间支持高转换比&#xff0c;实现从48V输入到低压轨的直接降压转换&#xff0c;降低了系统复杂性和解决方案成本。如果需要&#xff0c;在低至6V的输…

天猫全店商品采集教程,天猫店铺所有商品接口(详解天猫店铺所有商品数据采集步骤方法和代码示例)

随着电商行业的快速发展&#xff0c;天猫已成为国内的电商平台之一&#xff0c;拥有着海量的商品资源。对于一些需要大量商品数据的商家或者需求方来说&#xff0c;天猫全店采集是非常必要的。本文将详细介绍天猫全店采集的步骤和技巧&#xff0c;帮助大家更好地完成数据采集任…

使用Visual Leak Detector排查内存泄漏问题

目录 1、VLD工具概述 2、下载并安装VLD 2.1、下载VLD 2.2、安装VLD 3、VLD安装目录及文件说明 3.1、安装目录及文件说明 3.2、关于32位和64位版本的详细说明 4、在工程中引入VLD 5、内存泄漏检测实例讲解 5.1、程序启动报错 5.2、启动调试&#xff0c;查看内存泄漏报…

二维码生成器

二维码生成器 二维码生成器_二维码在线制作_应用方案提供商_互联二维码 使用方式 先知道自己电脑端口 然后运行你要生成页面 拼接自己的端口和页面路径

四川天蝶电子商务有限公司正规吗?

近年来&#xff0c;随着短视频平台的兴起&#xff0c;抖音成为了中国最受欢迎的社交媒体之一。许多企业看到了抖音带货的巨大商机&#xff0c;纷纷涌入这个领域。然而&#xff0c;一些不法分子也乘机滋生&#xff0c;伪装成合法的商家&#xff0c;进行各种欺诈行为。所以&#…