HTTP请求⽅法

ops/2024/9/23 6:29:52/

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状态码

https://i-blog.csdnimg.cn/direct/77d7aadb388e4ac59ddef18f891db434.png" width="907" />
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

http://www.ppmy.cn/ops/108701.html

相关文章

贪心+构造,1924A - Did We Get Everything Covered?

目录 一、题目 1、题目描述 2、输入输出 2.1输入 2.2输出 3、原题链接 二、解题报告 1、思路分析 2、复杂度 3、代码详解 一、题目 1、题目描述 2、输入输出 2.1输入 2.2输出 3、原题链接 1924A - Did We Get Everything Covered? 二、解题报告 1、思路分析 我…

PPStructure核心源码研究(一)总论

通过系列文章,来记录PPStructure源代码研究过程中学习到的知识。 首在修身养性,若能兼济他人,则善莫大焉。 本文首先通过一个表格识别的应用场景,举例说明PPStructure的基本应用,然后分析其内部实现时序,介绍相关类,为PPStructure的源码研究形成一个总体印象。 目录 1…

富格林:严厉打破欺诈实现安全

富格林认为,“磨刀不误砍柴工”这话在现货黄金交易市场中同样也适用,特别是近年来市场的避险情绪逐渐升温,人们对现货黄金的投资需求加大的情况下,严厉打破欺诈是我们能否确保交易安全的关键。富格林将给大家总结打破欺诈套路的小…

python爬虫基础

python 文章目录 python变量变量类型 输出运行程序 ctrlshiftf10命名规范:字母,数字,下划线 开头不能是数字注释: ctrl?字典 键key:值value修改字典的信息字典添加一个键值对字典删除一个键值对 实操案例--…

【最新华为OD机试E卷-支持在线评测】通过软盘拷贝文件(200分)多语言题解-(Python/C/JavaScript/Java/Cpp)

🍭 大家好这里是春秋招笔试突围 ,一枚热爱算法的程序员 ✨ 本系列打算持续跟新华为OD-E/D卷的三语言AC题解 💻 ACM金牌🏅️团队| 多次AK大厂笔试 | 编程一对一辅导 👏 感谢大家的订阅➕ 和 喜欢💗 🍿 最新华为OD机试E卷,全、新、准,题目覆盖率达 95% 以上,支持…

美国洛杉矶ip有哪些独特优势

美国洛杉矶的IP地址独特优势主要体现在以下几个方面,rak小编为您整理发布美国洛杉矶的IP地址独特优势,希望 对您选择服务器有帮助。 1. 丰富的IP资源:美国洛杉矶多IP服务器提供的IP数量从几十到几百不等,最多可提供多达511个独立I…

dubbo 服务消费原理分析之应用级服务发现

文章目录 前言一、MigrationRuleListener1、迁移状态模型2、Provider 端升级3、Consumer 端升级4、服务消费选址5、MigrationRuleListener.onRefer6、MigrationRuleHandler.doMigrate6、MigrationRuleHandler.refreshInvoker7、MigrationClusterInvoker.migrateToApplicationFi…

LeetCode之图

200. 岛屿数量 class Solution {public int numIslands(char[][] grid) {int rows grid.length;int clolumns grid[0].length;if (grid null || rows 0) {return 0;}int numIsLands 0;for (int i 0; i < rows; i) {for (int j 0; j < clolumns; j) {if (grid[i][…