对于 HTTP 请求方法,seaconch 一直是有不少疑惑,按照计划今天就来了解一下各个请求有何区别浏览器
根据HTTP标准,HTTP请求可使用多种请求方法。缓存
HTTP1.0定义了三种请求方法: GET、POST 和 HEAD方法。服务器
HTTP1.1新增了五种请求方法:OPTIONS、PUT、PATCH、DELETE、TRACE 和 CONNECT 方法。app
seaconch 今天只总结其中常见的几种方法网站
HTTP 1.0 三个方法:HEAD、GET、POST 默认都属于简单请求 Simple Requesturl
预检请求 Priflight Request 即在请求以前须要首先由浏览器自发发送 Options 请求的请求code
预检请求的范围orm
通常 HTTP1.1 中的方法请求默认都会触发预检请求对象
可是简单请求知足一下条件也能够触发 Options 请求ip
GET 方法的首要目的是 获取资源
固然您也能够走野路子,不过在这里 seaconch 并不提倡哦
a) 参数可见
GET 方法的参数是明文可见的包含在 URL 当中,因此说敏感信息不建议使用 GET 方法
不过也正是所以,因此 GET 方法容许被保存书签
b) 数据类型只容许 ASCII
GET 方法的数据类型只容许是 ASCII 字符,因此说传递 二进制 文件就不能够用 GET 方法了哦
c) 能够保存书签
当咱们访问某一个网站的频率特别高的时候,确定添加到书签,那其实书签就是依靠 GET 方法来保存的
d) 能够被缓存
GET 方法支持缓存,当本次请求容许被缓存时,会将资源存值本地 cache ,在未过时的状况下直接取本地 cache;缓存过时后视状况而定
e) 参数会保留在浏览器历史记录
比较直观的感觉就是,咱们能够在浏览器的历史记录中查看到曾经搜索过的关键字信息
f) 请求长度会受限于所使用的浏览器与服务器
不一样的浏览器对于 GET 请求长度的限制也是不一样的,注意这是 浏览器 / 服务器(IE、Chrome、Apache、IIS等) 对于长度的限制,而不是 HTTP 协议
POST 方法的首要目的是 提交,POST 方法通常用于添加资源
a) 参数不可见,也不会被保存
因此说 POST 方法是不能够被保存书签的
b) 不能收藏为书签
理由如上
c) 不能够被缓存
我要提交的数据被缓存在本地 cache 中想一想其实也是没道理的
d) 不会被保存在浏览器历史中
一样是由于参数不可见
e) 不限制请求长度
对于 POST 方法这种以 提交 为首要目的的方法,确定是不能够限制请求长度的
f) 数据类型
不限,因此说 POST 是能够 提交文件 到服务器的
g) 请求方式
POST 请求与 GET 请求不一样,他会首先提交 HEAD 信息,待获得 100 响应后,才会再次将 DATA 提交
HEAD 方法用于获取报头信息,例如检查 cache 是否被修改,是否过时?
HEAD 方法与 GET 方法相似,但并不会返回响应主体
OPTIONS 方法的首要目的是 Priflight Request
假如我如今有以下配置:
Access-Control-Allow-Methods:OPTIONS, PUT
那么当浏览器发起了 Priflight Request 后,只在包含在 被容许的 HTTP 方法中的请求会被经过(Simple Request除外),而没有被包含在内的请求,例如 DELETE 在OPTIONS 以后将不会被请求
PUT 与 PATCH 方法都是用于更新资源
PUT 对后台来讲 PUT 方法的参数是一个完整的资源对象,它包含了对象的全部字段
PATCH 对后台来讲 PATCH 方法的参数只包含咱们须要修改的资源对象的字段
DELETE 方法通常用于删除资源
其实虽然咱们都说 POST(增) DELETE(删)PUT(改)GET(查),但其实真正咱们是如何实现方法的是随意的,也就是你彻底能够用 GET 删除资源,DELETE 增长资源,因此说还有些没想明白的同窗到这里就能够释然了,毕竟规定是死的,人是活的,可是按照规定是好的,不按规定也是能够的。
晚安