HTTP请求⽅法

HTTP请求⽅法

1. GET :申请获取资源,不对服务器产⽣影响
2. POST POST 请求通常⽤于发送数据,例如提交表单数据、上传⽂件等,会影响服务器,服务器可能动态创建新的资源或更新原有资源。
3. HEAD :类似 GET ,仅要求服务器返回头部信息,不返回实际的资源内容。
4. PUT :⽤于更新服务器上的资源或创建新资源。
5. DELETE :请求服务器删除指定的资源。
6. TRACE :⽤于测试。要求⽬标服务器返回原始的 HTTP 请求内容
7. PATCH : ⽤于对资源进⾏部分更新。
8. CONNECT :⽤于代理服务器
9. OPTIONS :⽤于获取服务器⽀持的 HTTP ⽅法列表,以及针对指定资源⽀持的⽅法

GETPOST请求的区别

概念
GET POST 都是 HTTP 请求⽅法
1 GET
申请获取资源,不对服务器产⽣影响
2 POST
客户端向服务器提交数据,会影响服务器,服务器可能动态创建新的资源或更新原有资源
请求数据:若为 GET ,则请求数据为空;其主要是在 POST 中进⾏使⽤,使⽤于需要填表单 (Form) 场景
参数传递
HTTP 协议没有 Body URL 的⻓度限制,对 URL 限制的⼤多是浏览器和服务器的原因。
GET 请求的参数⼀般写在 URL 中,所以 GET 传送的数据量较⼩,不能⼤于 2KB ,且只接受 ASCII 字符
POST 请求参数⼀般放在请求体中,所以其请求信息没有⻓度限制, 对于数据类型也没有限制
安全和幂等
安全: HTTP 协议中,安全是指请求⽅法不会破坏服务器上的资源
幂等:多次执⾏相同的操作,结果都相同
GET 为安全幂等的,因为它为只读操作,⽆论操作多少次,服务器上的数据都是安全的,且每次的结果都是相同的
POST 因为是「新增或提交数据」的操作,会修改服务器上的资源,所以是 不安全 的,且多次提交数据就会创建多个资源,所以不是幂等 的。
缓存机制
GET 请求会被浏览器主动 cache ,如果下⼀次传输的数据相同,那么就返回缓存中的内容,以求更快的展示数据,⽽ POST 不会,除⾮⼿动设置。
GET 请求参数会被完整保留在浏览器历史记录⾥,⽽ POST 中的参数不会被保留。
GET 产⽣的 URL 地址可以被 保存为书签,⽽ POST 不可以。
GET 在浏览器回退时是⽆害的,⽽ POST 会再次提交请求。
时间消耗
GET 产⽣⼀个 TCP 数据包:浏览器会把 header data ⼀并发送出去,服务器响应 200 (返回数据)
POST 产⽣两个 TCP 数据包,对于 POST ,浏览器先发送 Header ,服务器响应 100 continue ,浏览器再发送 data,服务器响应 200 ok (返回数据)
编码⽅式
GET 请求只能进⾏ URL 编码 application/x-www-form-urlencoded
POST ⽀持多种编码⽅式 application/x-www-form-urlencoded multipart/form-data 。为⼆进制数据使⽤多种编码。)
实际上本质都是⼀样的,并⽆区别
1. 都是 HTTP 请求协议的请求⽅法,⽽ HTTP ⼜是基于 TCP/IP 的关于数据如何在万维⽹中如何通信的协议,所以GET/POST实际上都是 TCP 链接
2. 由于 HTTP 的规定以及浏览器 / 服务器的限制,导致它们在应⽤过程中可能会有所不同

HTTP状态码

200 :客户端请求成功
206 partial content 服务器已经正确处理部分 GET 请求,实现断点续传或同时分⽚下载,该请求必须包含 Range 请求头来指示客户端期望得到的范围
301 (永久重定向):该资源已被永久移动到新位置,将来任何对该资源的访问都要使⽤本响应返回的若⼲个 URL之⼀
302 (临时重定向):请求的资源现在临时从不同的 URI 中获得
304 :如果客户端发送⼀个待条件的 GET 请求并且该请求以经被允许,⽽⽂档内容未被改变,则返回 304, 该响应不包含包体(即可直接使⽤缓存)
400 :请求报⽂语法有误,服务器⽆法识别
401 :请求需要认证
403 :请求的对应资源禁⽌被访问
404 :服务器⽆法找到对应资源
500 :服务器内部错误
503 :服务器正忙

HTTP缓存有⼏种

将资源(如⽹⻚、图像、脚本等)的副本存储在客户端或中间代理服务器上,以便将来的请求可以直接从缓存中获取,⽽不必重新从服务器下载资源。这有助于减少⽹络延迟,提⾼⻚⾯加载速度,并减轻服务器的负担。
缓存可以解决什么问题
减少不必要的⽹络传输,节约带宽
更快的加载⻚⾯
减少服务器负载,避免服务过载的情况出现
强制缓存
强缓存:浏览器判断请求的⽬标资源是否有效命中强缓存,如果命中,则可以直接从内存中读取⽬标资源,⽆需与服务器做任何通讯。
Expires 强缓存 :设置⼀个强缓存时间,此时间范围内,从内存中读取缓存并返回。
Cache-Control 强缓存 http1.1 中增加该字段,使⽤ max-age 指令,可以设置资源在缓存中的最⻓有效时间,单位为秒。例如, Cache-Control: max-age=3600 表示资源在缓存中保留 3600
协商缓存
与强制缓存不同,协商缓存依赖于客户端和服务器之间的交互,在协商缓存中,服务器在响应中提供了资源的⼀些标识信息,客户端在后续请求中通过这些信息来判断资源是否发⽣了变化,进⽽判断是否需要重新传输资源。
下⾯是常⽤于协商缓存的⼀些头部字段
ETag If-None-Match
ETag 是服务器为资源⽣成的唯⼀标识符,可以是根据⽂件内容计算出的哈希值。
客户端在请求头部的 If-None-Match 字段中携带上次响应的 ETag 值。
服务器⽐较请求中的 If-None-Match 值与当前资源的 ETag 值,如果匹配,表示资源未发⽣变化,返回状态码 304 Not Modified
Last-Modified If-Modified-Since
Last-Modified 是资源的最后修改时间,服务器在响应头部中返回。
客户端在请求头部的 If-Modified-Since 字段中携带上次响应的 Last-Modified 时间。
服务器⽐较请求中的 If-Modified-Since 值与当前资源的 Last-Modified 值,如果请求时间早于资源的最后修改时间,表示资源未发⽣变化,返回状态码 304 Not Modified
  • 15
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值