HTTP网络协议的请求方法,具体详解(2024-04-26)

1、HTTP

超文本传输协议,是一种实现客户端和服务器之间通信的响应协议,它是用作客户端和服务器之间的请求

根据 HTTP 标准,HTTP 请求可以使用多种请求方法。

2、方法分类

HTTP1.0 定义了三种请求方法: GET, POST 和 HEAD 方法。

HTTP1.1 新增了六种请求方法:OPTIONS、PUT、PATCH、DELETE、TRACE 和 CONNECT 方法。

序号方法描述
1GET用于请求服务器发送某个资源。GET 请求不应该对服务器上的资源做出任何更改,并且应该是幂等的(即多次重复的请求应该产生相同的结果)。例如,当你在浏览器中输入 URL 地址时,浏览器会发送一个 GET 请求来获取该 URL 对应的网页。
2HEAD类类似于 GET 请求,但服务器不返回请求的资源主体,只返回响应头。HEAD 请求通常用于获取资源的元信息,如资源的大小、类型等,而不需要获取资源的实际内容。
3POST用于向服务器提交数据,通常用于提交表单或上传文件。POST 请求可能会导致服务器上的状态更改,并且不一定是幂等的。例如,在提交注册表单时,浏览器通常会发送一个 POST 请求,将用户提供的信息发送到服务器进行处理。
4PUT用于向服务器上传资源,通常用于更新已存在的资源或创建新的资源。PUT 请求应该是幂等的,即多次执行相同的 PUT 请求应该产生相同的结果。
5DELETE用于请求服务器删除指定的资源。DELETE 请求应该是幂等的,即多次执行相同的 DELETE 请求应该产生相同的结果。
6CONNECT用于建立到服务器上指定端口的隧道,通常用于代理服务器。
7OPTIONS用于请求服务器返回支持的 HTTP 方法和其他选项。例如,客户端可以发送 OPTIONS 请求来确定服务器支持哪些 CORS(跨域资源共享)策略。
8TRACE回显服务器收到的请求,主要用于测试或诊断。
9PATCH用于在请求-响应链上的每个节点获取传输路径。TRACE 请求通常用于调试和测试,以查看请求在经过各种代理服务器和中间件时如何被修改。

(1)GET 获取资源

  • GET 方法用来请求访问已被URI识别的资源,指定的资源经服务器端解析后返回响应内容;
  • 也就是说,如果请求的资源是文本,那就保持原样返回;如果是 CGI(Common Gateway Interface,通用网关接口)那样的程序,则返回经过执行后的输出结果;

请求GET/index.html HTTP/1.1
Host:www.myindex.jp
响应返回index.html的页面资源

(2)POST 上传实体主体

  • 主要向指定资源提交数据进行处理请求(例如提交表单);
  • 数据被包含在请求附件中;
  • POST请求可能会导致新资源的建立和已有资源的修改

请求POST/submit.cgi HTTP/1.1
Host:www.myindex.jp
Content-Length:150(150字节的数据)
响应返回接收submit.cgi数据的处理结果

 (3)HEAD 获得报文首部

  1. 获得报文首部;
  2. 类似GET,只是不返回报文主体部分;
  3. 用于确认URI的有效性及资源更新的日期时间等;

(4)PUT 上传文件

  • PUT方法用来上传文件;
  • 就像FTP协议的文件上传一样,要求在请求报文的主体中包含文件内容,然后保存到请求URI指定的位置;
  • 但鉴于 HTTP/1.1 的 PUT 方法自身不带验证机制,任何人都可以上传文件 , 存在安全性问题,因此一般的Web网站不使用该方法;
  • 若 配合 Web 应用程序的验证机制,或架构设计采用REST(REpresentational State Transfer,表征状态转移)标准的同类 Web 网站,就可能会开放使用 PUT 方法。

请求PUT/example.html HTTP/1.1
Host:www.myindex.jp
Content-Type:text/html
Content-Length:150(150字节的数据)
响应响应返回状态码204 No Content(比如:该html已存在于服务器上)

(5)DELETE 删除文件

  • DELETE用来删除文件,是与 PUT 相反的方法;
  • DELETE 方法按 请求 URI 删除指定的资源;
  • 由于HTTP/1.1 的 DELETE 方法本身和 PUT 方法一样不带验证机制,所以一般的Web网站也不使用 DELETE 方法;
  • 但是当配合 Web 应用 程序的验证机制,或遵守 REST 标准时还是有可能会开放使用的;

请求DELETE/example.html HTTP/1.1
Host:www.myindex.jp
响应响应返回码204 No Content(比如:该html已从该服务器上删除)

(6)OPTIONS 询问支持的方法

查询针对请求 URI 指定的资源支持的方法。

请求OPTIONS * HTTP/1.1
Host:www.myindex.jp
响应HTTP/1.1 200 OK
Allow:GET,POST,HEAD,OPTIONS(返回服务器支持的方法)

3、GET与POST的区别?

 (1)get参数放在地址栏中,post参数放在请求主体中;

 (2)get请求只发送一次TCP数据包,post要发送两次TCP数据包

 (3)get请求能保存链接,但post不行

 (4)get请求浏览器自动缓存,post缓存要手动设置,所以get请求刷新或后退不浪费资源,但post会重新请求

 (5)get请求只支持URL编码,但post支持多种编码

4、请求的状态码

2XX:客户端请求被正常处理

3XX:资源重定向

4XX:客户端错误,服务器拒绝回答

5XX:服务器端请求错误

200 OK                              请求正常处理完毕
204 No Content                 请求成功处理,没有实体的主体返回
206 Partial Content           GET范围请求已成功处理
301 Moved Permanently   永久重定向,资源已永久分配新URI
302 Found                         临时重定向,资源已临时分配新URI
303 See Other                   临时重定向,期望使用GET定向获取
304 Not Modified               发送的附带条件请求未满足
307 Temporary Redirect    临时重定向,POST不会变成GET
400 Bad Request               请求报文语法错误或参数错误
401 Unauthorized              需要通过HTTP认证,或认证失败
403 Forbidden                   请求资源被拒绝
404 Not Found                   无法找到请求资源(服务器无理由拒绝)
500 Internal Server Error    服务器故障或Web应用故障
503 Service Unavailable     服务器超负载或停机维护

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

HarmonyOS开发案例:【 自定义弹窗】

介绍 基于ArkTS的声明式开发范式实现了三种不同的弹窗,第一种直接使用公共组件,后两种使用CustomDialogController实现自定义弹窗,效果如图所示: 相关概念 [AlertDialog]:警告弹窗,可设置文本内容和响应回…

数据分析专家能力模型

招式:懂商业(业务能力) 外功更偏重于技能,首先需要懂招式,即懂商业,数据分析最终是为业务服务的,无论是互联网企业准求的用户增长和UJM分解,还是传统企业追求的降本增效和精细化运营…

java实现解析html获取图片或视频url

一、前言 有时在实际项目中,比如发布某篇文章,需要取文章中的某张图片作为封面,那么此时需要文章内容,获取html内容中的图片地址作为封面,下面讲下如何获取html中的图片或视频地址。 二、实现 1.先定义一个工具类&…

优化贪吃蛇在前进过程中,前进和后退的问题

1. 左边为head,右边为tail 定义相反数在abs()绝对值函数中实现 2. 在转向函数turn()中,如果绝对值不相等的时候才赋予方向的值 3.贪吃蛇吃食物的思路 3.1 初始化食物initFood(), 蛇碰到食物函数hasFood(),在移…

DeepFaceLab小白教程:视频换脸过程

合适那些人阅读? 适合从未使用过DeepFaceLab的群体。 如果你想基于DeepFaceLab完成一次视频换脸的操作,可以看本篇。 下载方式 GitHub https://github.com/iperov/DeepFaceLab 我是用motrix下载。 网盘 https://pan.baidu.com/share/init?surlO4…

21.Nacos集群搭建

模拟Nacos三个节点,同一个ip,启动三个不同的端口: 节点 nacos1, 端口:8845 节点 nacos2, 端口:8846 节点 nacos3, 端口:8847 1.搭建数据库,初始化数据库表结构 这里我们以单点的数据库为例 首先新建一…

TDSQL手动调整备份节点或冷备节点

一、背景描述 近期TDSQL数据库备份不稳定,有些set实例的备份任务未自动发起。经排查分析,存在多个set实例容量已经超过TB级别,且冷备节点都是同一台。因此,需要手动将当前备份节点改到其他备节点,开启增量备份&#x…

动静态库以及动态链接

文章目录 静态库制作静态库如何使用静态库 动态库动态库的制作动态库的使用动态链接 库是给别人用的,所以库中一定不存在main函数。库一般会有lib前缀和后缀,去掉前缀和后缀才是库名。 静态库 静态库(.a):程序在编译…

引入线程的贪吃蛇风骚走位

1.在main函数中分别引入线程t1 和线程 t2 一个线程用来刷新界面,一个线程用来改变方向 2.刷新界面函数,无限次刷新 3. 也是无限循环while(1) 定义key 从键盘获取输入方向,赋值给dir; 4.在初始化函数中确定蛇向有行走为方向 5.从改变方向的函数…

ESLint 、 e2e test 学习

Lint和Format的区别: Lint只会告诉你代码中的错误或者不符合规范的地方,而Format是用来对格式作调整的 HTML/tpl:HTMLLint CSS/SCSS:Stylelint JS/JSX:Eslint JSLint:古老,不能配置和扩展JSHin…

CentOS安装CRI--containerd

前言 CRI,Container Runtimes,通常直译成容器进行时因为kubernetes,从1.24开始,移除了Dockershim,需要额外安装CRI,保障Pod能顺利运行。网上有很多容器进行时的工具,本文采用containerd工具。 …

Vue 使用Canvas画布手写电子版签名 保存 上传服务端

电子版签名效果 定义画布 <canvas width"500"height"250"ref"cn"mousedown"cnMouseDown"mousemove"cnMouseMove"mouseup"cnMouseUp"style"width:500px;height: 250px;background-color:snow;padding: 10p…

ros2 node 之间的通信方式之 —— Topic通信案例

文章目录 ros2 node 之间的通信方式之 Topic通信Topic 通信案例1、创建工作空间2、创建功能包3、编写发布者和订阅者代码3.1 topic_helloworld_pub.cpp3.2 topic_helloworld_sub.cpp 4、编写CMakeLists.txt5、编译工作空间下的功能包6、运行结果 ros2 node 之间的通信方式之 To…

attempt to compare nil with number -- 黑马点评出现问题

问题情况 : 主要问题 : 调用lua执行redis时&#xff0c;有一个值会接受nil&#xff08;因为redis中没有该数据&#xff09;或者数值&#xff0c;当该值为nil时执行报错&#xff0c;因为会用到将该值与其他数字比较&#xff0c;故报错attempt to compare nil with number 当然…

opencv图像处理

1、图像滤波处理 通过滤波来提取图像特征&#xff0c;消除噪声。 常用滤波方式有&#xff1a;均值滤波、高斯滤波、中值滤波、双边滤波。 高斯滤波&#xff1a; blur_gray cv2.GaussianBlur(orgGray, (kernel_size, kernel_size), 0) orgGray&#xff1a;灰度图像&#xf…

Amazon云计算AWS之[2]弹性计算云EC2

文章目录 说明EC2基本架构Amazon机器映象&#xff08;AMI&#xff09;实例&#xff08;Instance&#xff09;弹性块存储&#xff08;EBS&#xff09; EC2关键技术地理区域和可用区域EC2通信机制弹性负载均衡监控服务自动缩放服务管理控制台 EC2安全及容错机制EC2弹性IP地址 说明…

STM32 HAL库F103系列之IIC实验

IIC总线协议 IIC总线协议介绍 IIC&#xff1a;Inter Integrated Circuit&#xff0c;集成电路总线&#xff0c;是一种同步 串行 半双工通信总线。 总线就是传输数据通道 协议就是传输数据的规则 IIC总线结构图 ① 由时钟线SCL和数据线SDA组成&#xff0c;并且都接上拉电阻…

线性代数基础3 行列式

行列式 行列式其实在机器学习中用的并不多&#xff0c;一个矩阵必须是方阵&#xff0c;才能计算它的行列式 行列式是把矩阵变成一个标量 import numpy as np A np.array([[1,3],[2,5]]) display(A) print(矩阵A的行列式是&#xff1a;\n,np.linalg.det(A))array([[1, 3],[2, …

【C++打怪之路Lv3】-- 类和对象(上)

&#x1f308; 个人主页&#xff1a;白子寰 &#x1f525; 分类专栏&#xff1a;C打怪之路&#xff0c;python从入门到精通&#xff0c;数据结构&#xff0c;C语言&#xff0c;C语言题集&#x1f448; 希望得到您的订阅和支持~ &#x1f4a1; 坚持创作博文(平均质量分82)&#…

C++链表操作入门

数据结构基础&#xff1a;链表操作入门 数据结构基础&#xff1a;链表操作入门链表的基本概念链表的基本操作输出链表插入节点删除节点查找值 完整的链表操作示例结语 数据结构基础&#xff1a;链表操作入门 在计算机科学中&#xff0c;数据结构是组织和存储数据的方式&#x…