HTTP请求方法

一:http版本

  • HTTP/0.9
      这是http在1991年最早大规模使用的版本,如今已不再使用,在这个版本中只有GET一种请求方法,没有指定版本号,也没有请求头信息,客户端向服务器传递信息的能力非常有限。
  • HTTP/1.0与HTTP/1.1
      从http1.0到http1.1发生了非常大的改动,现如今被广泛使用的为http1.1,http1.0主要用在代理服务器中,支持GET、POST、HEAD三种方法,http1.1新增了OPTIONS、PUT、DELETE、TRACE、CONNECT五种方法。两个版本性能上的主要区别体现在如下所示:
      1:缓存处理,在http1.0中主要使用header的if-Modified-Since、Expires来作为缓存判断的标准,http1.1则引入了更多的缓存控制策略如Entity Tag
    If-Unmodified-Since,If-Match,If-None-Match来作为缓存策略。
      2:带宽优化及网络连接的使用,在http1.0存在浪费带宽的现象,例如客户端只需要某个对象的一部分,而服务器将对象全部传送过来,并且不支持断点续传
    功能,http1.1在请求头引用了range头域,它允许只请求资源的某个部分,即返回码是206(Partial Content),这样就能更充分利用带宽和连接。
      3:错误通知的管理,在http1.1中新增了24个错误状态响应码
      4:Host头处理,在http1.0中认为每台服务器都绑定一个唯一的IP地址,因此请求消息中的URL并没有传递主机名(hostanme),但随着虚拟主机技术的发展,在一台物理服务器上可以存在多个虚拟主机,并且共享一个IP地址。http1.1的请求消息和响应消息
    都应支持Host头域,且请求消息中如果没有Host头域会报告一个错误   
    5:长连接,http1.1支持长连接(persistentConnection)和请求的流水线处理。在一个tcp连接上可以传送多个http请求和响应,减少了建立和关闭连接的消耗和延迟,在http1.1中默认开启Connection:keep-alive,一定程度上弥补了http1.0每次请求都要创建连接的缺点。
  • HTTP/2.0
      这个版本于2015正式发布,主要通过支持请求与响应的多路重用来减少延迟,通过压缩http头字段将协议开销降到最低,同时增加了对请求优先级和服务器推送的支持。

二:请求方法

请求方法 方法作用
GET GET请求会显示请求指定的资源,一般由于数据资源的读取操作,在url末尾可以追加查询字符串,请求的body中只能包含很少数据,依据浏览器和服务器的不同而不同
POST 主要用来向服务器新增数据,请求的主体理论上可以包含任意多数据
HEAD HEAD与GET方法一样,只是不返回报文的主体部分,主要用于确认url的有效性及资源更新的日期时间。判断类型、查看响应中的状态码、测试资源是否被修改过、查看服务器性能
PUT 用来传输文件,在请求报文的主体内容中包含文件内容,保存到请求URL指定的位置,http1.1的PUT方法自身不带验证机制,任何人都可以请求,上传文件,会有安全问题
DELETE 删除服务器上某个资源
OPTIONS 查询服务器支持的请求方法
TRACE 可以对请求消息的传输路径进行追踪
CONNECT 要求在与代理服务器通信时建立隧道,实现用隧道协议进行tcp通信。主要使用ssl(安全套接层)和tls(传输层安全)协议把通信内容加密后经网络隧道传输
PATCH 与PUT请求类似,同样用于资源的更新,但有两点不同,一是PATCH一般用于资源的部分更新,而PUT用于资源的整体更新;二是当资源不存在时,PATCH会创建一个新的资源,而PUT只会对已存在的资源进行更新

GET与POST区别:
  1:GET用于信息获取,对服务器来说它是安全的,而POST请求用于修改服务器上的资源。
  2:GET请求的数据附在URL之后,POST方法提交的数据则放置在http报文实体的主体所以对于数据来说,POST安全性比GET高
  3:GET传输数据量一般在2kb,原因在于GET提交数据是附在URL之后,http虽然对于URL数据长度没有限制,但是不同的浏览器或服务器对于URL长度是有限制的。理    论上,POST是没有大小限制的,但出于安全角度考虑,服务器软件在实现时会做    一定限制。

三:方法特性

幂等性: 同一个系统,使用同样的条件,一次请求和重复的多次请求对系统资源的影响是一致的。
安全性: 请求不会影响到资源的状态。

请求方法 幂等性 安全性
GET ✔️ ✔️
POST ✖️ ✖️
HEAD ✔️ ✔️
PUT ✔️ ✖️
DELETE ✔️ ✖️
OPTIONS ✔️ ✔️

转载于:https://juejin.im/post/5bc6aa5ae51d450e4d303d2c

posted @ 2021-03-18 18:16  某菜狗  阅读(48)  评论(0编辑  收藏  举报