HTTP的请求方式有哪些?

news2024/11/15 12:00:32

文章目录

  • HTTP的请求方式
    • 1. GET方法
    • 2. HEAD方法
    • 3. POST方法
    • 4. PUT方法
    • 5. DELETE方法
    • 6. CONNECT方法
    • 7. OPTIONS方法
    • 8. TRACE方法


HTTP的请求方式

在这里插入图片描述

在 HTTP/1.1 中提供了一系列方法以便我们向服务器发送不同类型的请求,需要注意的是这些方法名称都是区分大小写的,而且必需使用大写字母。具体的方法名称和说明如下表所示:

方法名称方法说明
GETGET 方法用于根据 URI 参数从服务器中获取数据,是最常用的请求方法之一
HEADHEAD 方法与 GET 方法类似,但服务器在响应时只返回响应行和响应头,不会返回响应体
POSTPOST 请求用于将数据发送到服务器。例如使用 HTML 表单上传文件或提交客户信息等
PUTPUT 方法可以向服务器中写入文档,有点类似于使用 FTP 上传文件
DELETEDELETE 方法用于删除 URI 所指定的目标资源,与 PUT 方法正好相反
CONNECTCONNECT 方法要求在与代理服务器通信时建立隧道,实现用隧道协议进行 TCP 通信
OPTIONSOPTIONS 方法用来查询目标资源所在服务器支持的 HTTP 方法
TRACETRACE 方法可以让服务器端将收到的请求返回给客户端,主要用于开发阶段的测试和诊断

1. GET方法

GET 方法可以根据请求行中 URL 部分的参数从服务器中获取数据。例如我们在浏览器中打开一个连接,然后就会在浏览器看到相应的页面,这一过程就是通过 GET 方法实现的。另外,使用 GET 方法还可以在 URL 参数中携带一些字符串类型的参数一同传输给服务器,由于是在 URL 中携带的参数,我们可以在浏览器的地址栏直观的看到,所以安全性较低,一般只用来传递一些没有风险的数据。而且 GET 方法对于所传输数据的大小也有限制,一般不能超过 2kb。

以访问 http://www.csdn.net/hello.html 这个页面为例,客户端使用 GET 方法发起的 HTTP 请求如下所示:

GET /hello.html HTTP/1.1
Host: www.csdn.net
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.125 Safari/537.36
Connection: keep-alive
Pragma: no-cache
Cache-Control: no-cache
Upgrade-Insecure-Requests: 1
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: zh-CN,zh;q=0.9

针对上面的请求,服务器的响应如下所示:

HTTP/1.1 200 OK
Server: Tengine
Last-Modified: Thu, 17 Sep 2020 13:07:28 GMT
ETag: "34aa387-d-1568eb00"
Vary: Authorization,Accept
Date: Thu, 17 Sep 2020 13:32:54 GMT
Accept-Ranges: bytes
Content-Length: 68
Content-Type: text/html
Connection: Closed

<!DOCTYPE html>
<html>
<body>
<h1>Hello,CSDN!</h1>
</body>
</html>

2. HEAD方法

HEAD 方法在功能上与 GET 方法相似,不同之处在于使用 HEAD 方法服务器只会返回响应行和响应头,不会返回响应体。同样以访问 http://c.biancheng.net/hello.html 这个页面为例,客户端使用 HEAD 方法发起的 HTTP 请求如下所示:

HEAD /hello.html HTTP/1.1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.125 Safari/537.36
Host: www.csdn.net
Accept-Language: zh-CN,zh;q=0.9
Accept-Encoding: gzip, deflate
Connection: Keep-Alive

针对 HEAD 方法发起的请求,服务器的响应如下所示:

HTTP/1.1 200 OK
Server: Tengine
Last-Modified: Thu, 17 Sep 2020 13:07:28 GMT
ETag: "34aa387-d-1568eb00"
Vary: Authorization,Accept
Date: Thu, 17 Sep 2020 13:32:54 GMT
Accept-Ranges: bytes
Content-Length: 0
Content-Type: text/html
Connection: Closed

通过服务器的响应结果可以看出,服务器在返回了响应行和响应头之后,并没有返回响应体。


3. POST方法

当我们需要将一些信息发送给服务器的时候就需要用到 POST 方法了,比如在提交表单或者上传文件的时候。与 GET 方法不同,POST 方法会将返送给服务器的信息放到请求体中,所以比 GET 方法更加安全。而且,POST 方法对于传输数据的大小和类型也没有限制。以提交表单为例,使用 POST 方法向服务器发起的 HTTP 请求如下所示:

POST /login.php HTTP/1.1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.125 Safari/537.36
Host: c.biancheng.net
Content-Type: text/xml; charset=utf-8
Content-Length: 40
Accept-Language: zh-CN,zh;q=0.9
Accept-Encoding: gzip, deflate
Connection: Keep-Alive

username=www.csdn.net&password=123456

上面的请求发送成功后,服务器端的脚本 login.php 会根据传递的数据做出相应的处理,并对客户端做出响应,响应结果如下所示:

HTTP/1.1 200 OK
Date: Thu, 17 Sep 2020 13:32:54 GMT
Server: Tengine
Last-Modified: Thu, 17 Sep 2020 13:07:28 GMT
ETag: "34aa387-d-1568eb00"
Vary: Authorization,Accept
Accept-Ranges: bytes
Content-Length: 51
Content-Type: text/html
Connection: Closed

<html>
<body>
<h1>登陆成功</h1>
</body>
</html>

4. PUT方法

使用 PUT 方法将数据传输到服务器,并将其存储在 URL 所指定的位置。假如我们要将 hello.html 文件的内容存储到服务器的根目录下,那么客户端发送的 HTTP 请求应该是下面这样的:

PUT /hello.html HTTP/1.1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.125 Safari/537.36
Host: www.csdn.net
Accept-Language: zh-CN,zh;q=0.9
Connection: Keep-Alive
Content-type: text/html
Content-Length: 182

<html>
<body>
<h1>Hello,CSDN!</h1>
</body>
</html>

这时服务器会在根目录下创建 hello.html 文件,并将请求中传输的数据保存到这个文件中,执行成功后会向客户端做出如下所示的响应:

HTTP/1.1 201 Created
Date: Thu, 17 Sep 2020 13:32:54 GMT
Server: Tengine
Content-type: text/html
Content-length: 30
Connection: Closed

<html>
<body>
<h1>The file was created.</h1>
</body>
</html>

5. DELETE方法

DELETE 方法可以请求服务器删除 URL 所指定的文件。假如要删除上面操作中在服务器根目录创建的 hello.htnl 文件,那么客户端的请求应该是下面这样的:

DELETE /hello.html HTTP/1.1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.125 Safari/537.36
Host: www.csdn.net
Accept-Language: zh-CN,zh;q=0.9
Connection: Keep-Alive

服务器在收到上面的请求后,会删除根目录下的 hello.html 文件,并对客户端做出如下响应:

HTTP/1.1 200 OK
Date: Thu, 17 Sep 2020 13:32:54 GMT
Server: Tengine
Content-type: text/html
Content-length: 30
Connection: Closed

<html>
<body>
<h1>URL deleted.</h1>
</body>
</html>

6. CONNECT方法

客户端使用 CONNECT 方法可以与 URL 所指向的目标服务器建立 HTTP 连接。假如要与域名(c.biancheng.net)所指向的服务器建立连接,客户端的请求如下所示:

CONNECT www.csdn.net HTTP/1.1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.125 Safari/537.36

连接建立成功后,服务器会对客户端做出如下响应:

HTTP/1.1 200 Connection established
Date: Thu, 17 Sep 2020 13:32:54 GMT
Server: Tengine

7. OPTIONS方法

当我们要使用本节中介绍的某个方法向服务器发送请求,但又不确定服务器是否支持此请求时,可以使用 OPTIONS 方法来查看服务器所支持的 HTTP 方法。在使用 OPTIONS 方法发送 HTTP 请求时,既可以指定具体的 URL,也可以使用星号(*)来代表整个服务器。假如要查看域名(c.biancheng.net)所指向服务器所支持的 HTTP 方法,客户端的请求如下所示:

OPTIONS * HTTP/1.1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.125 Safari/537.36

服务器的响应如下所示:

HTTP/1.1 200 OK
Date: Thu, 17 Sep 2020 13:32:54 GMT
Server: Tengine
Allow: GET,HEAD,POST,OPTIONS,TRACE
Content-Type: httpd/unix-directory

在服务器返回的响应头中,Allow 一行就是该服务器支持的所有 HTTP 方法。


8. TRACE方法

服务器在收到客户端使用 TRACE 方法发送的 HTTP 请求时,会将收到的请求报文放到响应体中返回给客户端。TRACE 方法主要在程序的开发测试阶段使用,使用 TRACE 方法可以查看请求在传递到服务器的过程中是否被篡改或破坏等等。客户端的请求示例如下所示:

TRACE / HTTP/1.1
Host: www.csdn.net
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.125 Safari/537.36

服务器的响应如下所示:

HTTP/1.1 200 OK
Date: Thu, 17 Sep 2020 13:32:54 GMT
Server: Tengine
Connection: close
Content-Type: message/http
Content-Length: 166

TRACE / HTTP/1.1
Host: www.csdn.net
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.125 Safari/537.36

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

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

相关文章

【吴恩达机器学习笔记】十四、推荐系统

✍个人博客&#xff1a;https://blog.csdn.net/Newin2020?spm1011.2415.3001.5343 &#x1f4e3;专栏定位&#xff1a;为学习吴恩达机器学习视频的同学提供的随堂笔记。 &#x1f4da;专栏简介&#xff1a;在这个专栏&#xff0c;我将整理吴恩达机器学习视频的所有内容的笔记&…

TensorFlow之分类模型-1

1 基本概念 机器学习 机器学习是指一段程序或者和一个系统从输入数据中训练一个模型。完成训练的模型可以对全新的数据进行预测&#xff0c;其中&#xff0c;新数据的分布是与被训练数据的分布保持一致。 训练 一个确定组成模型的实际参数的过程&#xff0c;这些参数包括权…

Linux | 为什么要有线程?| 线程概念 | 线程控制 | 线程ID的实质

文章目录为什么要有线程&#xff1f;Linux对于线程的设计Linux线程特点总结Linux线程和进程的比较线程的优点线程的缺点Linux下线程的使用线程的创建与销毁线程退出的三种方式什么是线程ID&#xff1f;线程局部存储线程分离exit对于线程的影响为什么要有线程&#xff1f; 假设…

二手书籍交易网站毕业设计,二手书籍买卖平台毕设,二手书籍交易市场平台设计与实现毕业设计论文分析

项目背景和意义 目的&#xff1a;本课题主要目标是设计并能够实现一个基于web网页的校园二手书籍交易系统&#xff0c;整个网站项目使用了B/S架构&#xff0c;基于python的Django框架下开发&#xff1b;用户通过登录网站&#xff0c;查询二手交易商品&#xff0c;购买二手交易网…

分享107个竞聘述职PPT模板,总有一款适合您

链接&#xff1a;https://pan.baidu.com/s/1snFUpkECYjvFEk0d3kNHiw?pwd87pd 提取码&#xff1a;87pd 下面是文件的名字&#xff0c;我放了一些图片&#xff0c;文章里不是所有的图主要是放不下...&#xff0c;大家下载后可以看到。 个人工作述职报告ppt范文免费下载 年终竞…

密集计算场景下的 JNI 实战

在 Java 发展历程中&#xff0c;JNI 一直都是一个不可或缺的角色&#xff0c;但是在实际的项目开发中&#xff0c;JNI 这项技术应用的很少。在笔者经过艰难的踩坑之后&#xff0c;终于将 JNI 运用到了项目实战&#xff0c;本文笔者将简单介绍 JNI 技术&#xff0c;并介绍简单的…

Gateway之限流、熔断,Sentinel--服务容错

目录 高并发带来的问题 1.编写java代码 2.修改配置文件中tomcat的并发数 3.接下来使用压测工具,对请求进行压力测试 压测工具 服务雪崩效应 常见容错方案 常见的容错组件 Sentinel入门 什么是Sentinel Sentinel 具有以下特征: Sentinel 分为两个部分: sentinel简单模…

[附源码]Python计算机毕业设计Django小区物业管理系统

项目运行 环境配置&#xff1a; Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术&#xff1a; django python Vue 等等组成&#xff0c;B/S模式 pychram管理等等。 环境需要 1.运行环境&#xff1a;最好是python3.7.7&#xff0c;…

如何在 Windows 10 上启用和设置 BitLocker 加密

启用和设置 BitLocker 加密 通过控制面板启用 BitLocker通过命令提示符启用 BitLockerBitlocker 可以使用控制面板中的图形界面或在命令提示符中执行一些命令来启用。在 Windows 10 上启用 Bitlocker 非常简单,但用户通常更喜欢通过控制面板而不是命令提示符来管理 Bitlocker …

python数据类型(1)

关于Python的数据类型 Python数据类型包括&#xff1a; 数字类型&#xff0c;字符类型&#xff0c;布尔类型&#xff0c;空类型&#xff0c;列表类型&#xff0c;元组类型&#xff0c;字典类型 1、数字类型 包括&#xff1a;整型int 浮点型float(有小数位的都是是浮点型) 注…

目标检测常见数据增强算法汇总讲解(Mixup,Cutout,CutMix,Mosaic)

在学习目标检测算法的过程中&#xff0c;发现了一些有趣的目标检测算法&#xff0c;打算简单写个笔记&#xff0c;不足之处还望谅解&#xff0c;可以在评论中指出来。 目标检测作为需要大量数据的算法&#xff0c;在实际情况中经常面临数据不足的情况&#xff0c;事实上很多时候…

JavaScript同步与异步

JavaScript采用单线程模式工作的原因&#xff1a;JavaScript设计之初是为了能够运行在浏览器实现页面交互&#xff0c;而实现页面交互的核心是操作DOM&#xff0c;这种模式就决定了它使用单线程模式&#xff0c;否则就需要解决复杂的多线程同步的问题。 这种模式的优点就是更安…

Vue3中 子组件内v-model绑定props接收到参数时报错update:modelValue

开发过程中二次封装了一个搜索的组件&#xff0c;子组件内使用了el-select和el-input 参数分别对应父组件传入的selectValue和selectText参数 子组件内部change和input事件来同步触发组件中数据的修改 最终本地开发环境一切正常&#xff0c;部署到测试环境和生产环境后出现下…

[附源码]JAVA毕业设计仁爱公益网站(系统+LW)

[附源码]JAVA毕业设计仁爱公益网站&#xff08;系统LW&#xff09; 项目运行 环境项配置&#xff1a; Jdk1.8 Tomcat8.5 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&…

判断一份好的问卷有哪些标准?

问卷的主要由三个部分组成&#xff1a;问卷说明、问卷主题、问卷结束。而这三个部分又包含了很多因素&#xff0c;比如问卷主题、问卷标题、问卷题目、问卷调查对象等。制作问卷不仅仅是简单的问题罗列&#xff0c;然后进行发放。不同质量的调查问卷会反馈出不一样的效果&#…

Spring Cloud微服务之eureka+client入门

Spring Cloud微服务之eurekaclient入门 谈到服务&#xff0c;想到一种“懒人思维”。家政服务为懒人收拾家务提供一种便利&#xff0c;快餐服务为不爱做饭的懒人提供一种方便.....等等。 说到微服务&#xff0c;顾名思义&#xff0c;就是把服务再细微化。比如需要送女友一束花…

FastReport Desktop 2023Microsoft SQL存储过程的支持

FastReport Desktop 2023Microsoft SQL存储过程的支持 添加了用于从JasperReports转换报告的模板。 添加了对连接到Microsoft SQL存储过程的支持。 在RTF中&#xff0c;添加了一项设置&#xff0c;以提高打印时的图像质量。 添加了导出到Microsoft Excel 2007时从“货币”转换为…

Landsat数据下载

Landsat数据下载步骤0 Landsat数据介绍1 下载地址2 下载步骤2.1 检索数据2.1.1 设置地点&#xff0c;有多种方法2.1.2 选择时间范围2.1.3 在Data Sets界面选择传感器&#xff08;卫星或者传感器的名称&#xff09;2.2 限定云量2.3 下载数据这是个老生常谈的话题了&#xff0c;我…

[附源码]Python计算机毕业设计Django校园快递柜存取件系统

项目运行 环境配置&#xff1a; Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术&#xff1a; django python Vue 等等组成&#xff0c;B/S模式 pychram管理等等。 环境需要 1.运行环境&#xff1a;最好是python3.7.7&#xff0c;…

ubuntu上msquic带根证书的测试使用

ubuntu上msquic带根证书的测试使用 1.证书1.1 根证书的生成1.2 根证书的导入1.4 openssl验证书1.5 修改/etc/hosts2. msquic编译2.1 quic协议编译2.2 示例程序编3.本地测试1.证书 1.1 根证书的生成 假设我们的域名为: www.contoso.com 创建CA私钥 openssl ecparam -out cont…