HTTP超文本传输协议

一. HTTP基本概念

1. HTTP是什么

HyperText Transfer Protocol超文本传输协议,是一个在“两点”之间“传输”文字、图片、音频、视频等“超文本”数据的“约定和规范”。(可以是服务器到服务器,也可以是服务器到客户端,所以用“两点”来描述更加准确)

2. HTTP常见状态码

2xx:

200 OK:一切正常。如果不是HEAD请求,服务器返回的响应都会有body数据。

204 No Content:与200类似,但是响应头没有body数据。

206 Partial Content:应用于HTTP分块下载或断点续传,表示响应返回的body数据并不是资源的全部,而是一部分。

3xx:

301 Moved Permanently:永久重定向。请求的资源已经不存在了,需要用新的URL访问。

302 Found:临时重定向。请求的资源还在,但是暂时需要用另一个URL来访问。

(301和302会在响应头中使用Location字段,指明后续要转跳的URL,浏览器会自动重定向新的URL)

304 Not Modified:用于缓存控制,不具有转跳的含义,只是通知资源未修改(本地缓存和服务器中资源一样),重定向已存在的缓存文件(通知可以继续使用)。

4xx:

400 Bad Request:客户端的请求报文有错误,很笼统。

403 Forbidden:服务器资源禁止访问。

404 Not Found:请求的资源在服务器上不存在或没找到。

5xx:

500 Internet Server Error:服务器内部错误,很笼统。

501 Not Implemented:请求的功能还不支持(如同“即将开业,敬请期待”)。

502 Bad Gateway:通常是一个服务器在做为网关或代理时返回的错误码,表示服务器正常工作,但是访问另一个服务器发生了错误。

503 Service Unavailable:服务器正忙,暂时无法响应。

3. HTTP常见字段

Host字段:客户端发送请求时,指定服务器的域名(一个服务器上可能有多个域名)。

Content-Length字段:服务器返回数据时,表明本次回应的长度。

Connection字段:持久连接(keep-alive)或非持久连接(close)。

Content-Type字段:服务器回应时,告知客户端数据是什么格式(比如Content-Type: text/html; charset=utf-8)。而在客户端请求时,使用Accept字段告知可以接受哪些数据格式(比如Accept: */*)。

Content-Encoding字段:说明数据的压缩方式。而客户端请求时,使用Accept-Encoding来告知可以接受什么压缩方式(比如Accept-Encoding: gzip, deflate)。

二. GET和POST

1. GET和POST有什么区别?

GET是从服务器获取指定的资源,资源可以是静态的文本、页面、图片、视频等。GET请求的参数一般写在URL中,URL只支持ASCII,所以GET的参数只允许ASCII字符。

POST是根据请求符合(报文的body)对指定的资源做出处理。POST请求所携带的数据一般写在报文的body中,可以是任意格式。

2. GET和POST方法都是安全和幂等的吗?

GET方法是安全且幂等的,因为它是“只读操作”。

POST方法会“新增或提交数据”,是不安全且不幂等的。

(此处的“安全”指服务器资源不会被修改,“幂等”指多次执行操作的结果相同)

三.HTTP缓存技术

1. HTTP缓存的实现方式

对于重复性的HTTP请求,把“请求-响应”的数据缓存在本地,下次可以直接读取本地缓存,从而提高性能。

HTTP缓存有两种实现方式:强制缓存、协商缓存

2. 强制缓存

只要浏览器判断缓存没有过期,就直接使用本地缓存。

强制缓存是使用Cache-Control(相对时间)、Expires(绝对时间)两个HTTP响应头字段实现的,表示资源在客户端缓存的有效期。(其中Cache-Control更加精细,也是更加建议使用的)。

Cache-Control实现强制缓存流程:

  1. 第一次请求访问后,服务器返回资源并在Response头部加上Cache-Control,设置了过期时间的大小。
  2. 再次请求访问时,先判断资源是否过期。未过期——使用缓存;已过期——重新请求服务器。
  3. 服务器收到请求后,会再次更新Response头部的Cache-Control。
3. 协商缓存

比如响应码304。这种通过服务器告知客户端是否可以使用缓存的方式被称为协商缓存。

协商缓存可以基于两种头部来实现。

第一种:请求头中的If-Modified-Since字段、响应头中的Last-Modified字段。

  1. Last-Modified:这个响应资源的最后修改时间;
  2. If-Modified-Since:当资源过期,响应头中有Last-Modified,则再次发起请求的时候带上Last-Modified的时间,服务器收到请求后发现有If-Modified-Since就与被请求资源的Last-Modified对比,判断是否有修改(有修改200 OK返回最新资源,无修改304读本地缓存)。

第二种:请求头中的If-None-Match字段、响应头中的ETag字段。

  1. Etag:唯一标识响应资源;
  2. If-None-Match:当资源过期,浏览器发现有Etag,则在再向服务器发送请求时,会将请求头If-None-Match设置为ETag的值。服务器收到请求后进行对比,后续依旧是304和200 OK响应码。

这两种方式一种是基于时间,一种是基于唯一标识,很明显,唯一标识更加可靠。同时两种方式时,ETag的优先级也会更高。

四. HTTP特性

1. HTTP(1.1)的优点

简单、灵活、易拓展、广泛应用、跨平台。

  1. 简单

基本报文的格式就是header+body,头部信息也是key-value简单文本的形式,易于理解。

  1. 灵活、易拓展

各类请求方法、URL/URI、状态码、头字段,都允许自定义和扩充。

应用层协议。

HTTPS就是在HTTP和TCP层之间增加了SSL/TLS安全传输层。

  1. 广泛应用、跨平台
2. HTTP(1.1)的缺点

双刃剑:无状态、明文传输

  1. 无状态

好处:服务器不会记忆HTTP状态,减轻了负担,把更多的性能用来对外服务。

坏处:完成关联性操作时很麻烦(比如在购物的登录-加购-下单-结算-支付,都需要询问一遍身份信息)。

解决方案:Cookie技术通过在请求和响应报文中写入Cookie信息来控制客户端的状态(类似于一个小纸条)。

  1. 明文传输

通过浏览器和Wireshark抓包都可以直接查看传输的信息,方便调试,但同时信息容易被窃取。

  1. 总言:不安全

使用明文(不加密),不验证通信方的身份(可能进入假网站),无法验证报文

五.HTTP和HTTPS

六.HTTP的演变

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

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

相关文章

鲲鹏系统:亚马逊账号防关联的最强利器

在亚马逊平台运营,我们都了解亚马逊通过浏览器中的Cookies来判断同一台电脑上是否有多个账号登录的情况。对于刷 单操作,通常需要小号登录刷完单后,清除cookies,切换不同的IP来进行操作,以避免账号之间被检测关联。 然…

源码篇--SpringCloud-OpenFeign--代理类的生成

文章目录 前言一、bean 定义的注册:1.1 启动类开启feign 接口:1.2 feign 接口的扫描: 二、feign bean 的生成:2.1.FeignContext bean :2.2.FeignClientFactoryBean 实例生成:2.2.1 this.feign(context) fei…

RPA财务机器人在厦门市海沧医院财务管理流程优化汇总的应用

目前国内外研究人员对于RPA机器人在财务管理流程优化领域中的应用研究层出不穷,但现有研究成果主要集中在财务业务单一领域,缺乏财务管理整体流程一体化管控的研究。RPA机器人的功能绝非单一的财务业务处理,无论从自身技术发展,或…

【安全策略】前端 JS 安全对抗浏览器调试方法

一、概念解析 1.1 什么是接口加密 如今这个时代,数据已经变得越来越重要,网页和APP是主流的数据载体。而如果获取数据的接口没有设置任何的保护措施,那么数据的安全性将面临极大的威胁。不仅可能造成数据的轻易窃取和篡改,还可能…

Jenkins实现自作自定义镜像并推送Harbor并编写目标服务器准备脚本

Jerkin 制作自定义镜像推送到Harbor docker build -t mytest:$tag . docker login -u admin -p Harbor12345 178.119.30.133:80 docker tag mytest:$tag 178.119.30.133:80/repo/mytest:$tag docker push 178.119.30.133:80/repo/mytest:$tag编写部署脚本 部署项目需要通过Pub…

MongoDB Compass 的教程

第一步:建立连接 点击Save&Connect 增加数据库: 填写数据库名字和文档名字并点击Create Database 删除文档: 创建文档: 插入文档数据 {Id:1001,name:"cyl",age:21} 插入成功: 更改原有数据 删除原有数据…

【深度学习目标检测】十三、基于深度学习的血细胞识别(python,目标检测,yolov8)

血细胞计数是医学上一种重要的检测手段,用于评估患者的健康状况,诊断疾病,以及监测治疗效果。而目标检测是一种计算机视觉技术,用于在图像中识别和定位特定的目标。在血细胞计数中,目标检测技术可以发挥重要作用。 首先…

Flutter 小技巧之升级适配 Xcode15

美好的 2024 从「适配」开始,按照苹果的尿性,2024 春季开始大家将不得使用 Xcode15 来构建 App ,另外根据《2024 的 iOS 的隐私清单》 要求,使用 Flutter 的开发者是无法逃避适配 Xcode15 更新的命运。 另外,众所周知…

C# ObjectArx 绘制表格并设置单元格合并

第一行默认是标题,可设置行【RowType】进行设置类型 Document doc Application.DocumentManager.MdiActiveDocument;using (Transaction tr doc.TransactionManager.StartOpenCloseTransaction()){BlockTable bt tr.GetObject(doc.Database.BlockTableId, OpenMo…

【Linux驱动】设备树中指定中断 | 驱动中获得中断 | 按键中断实验

🐱作者:一只大喵咪1201 🐱专栏:《Linux驱动》 🔥格言:你只管努力,剩下的交给时间! 目录 🏀在设备树中指定中断🏀代码中获得中断🏀按键中断⚽驱动…

管理多个亚马逊买家号的神器:一账号一IP,轻松防关联

如今,越来越多的人加入了亚马逊自养号的大军,每个人基本上都拥有着众多的买家账号。然而,随之而来的问题是,管理这些多个买家账号并非易事。正常情况下,一台设备应该对应一个账号,但当一台设备登录多个账号…

【GitHub项目推荐--13 个 Python 学习资源】【转载】

近些年,人工智能应用铺天盖地。人脸识别、老照片复活、换脸等应用都得益于人工智能算法。 许多人工智能算法封装的框架基于 Python 语言,这也导致了 Python 的热度只增不减。 Python 简单易学,根据 2020 年 StackOverflow 开发者调查报告显…

centos docker-compose安装教程-2024最新版 亲测可用

目录 长时间不安装,生疏了,再次记录下 1.下载 2.修改名称 3.提权 4.测试验证 长时间不安装,生疏了,再次记录下 1.下载 官网地址 docker-compose官网地址:https://docs.docker.com/compose/compose-file/compose-file-v3/ #进入目录 cd /usr/local/bin#下载 wg…

在 .NET 中使用可以漫游的 Web 凭据

Windows 凭据管理器是一个内置在 Windows 操作系统中的功能,为用户提供一种安全的方式来存储和管理凭据。本文主要介绍如何在 .NET 中使用可以漫游的 Web 凭据,以及使用中的基本事项。 1. 引言 在前面的文章《试用 Windows Terminal 中的 Terminal Chat…

D25XB60-ASEMI电机整流桥D25XB60

编辑:ll D25XB60-ASEMI电机整流桥D25XB60 型号:D25XB60 品牌:ASEMI 封装:GBJ-5(带康铜丝) 特性:插件、整流桥 平均正向整流电流(Id):25A 最大反向击穿…

elasticsearch[二]-DSL查询语法:全文检索、精准查询(term/range)、地理坐标查询(矩阵、范围)、复合查询(相关性算法)、布尔查询

ES-DSL查询语法(全文检索、精准查询、地理坐标查询) 1.DSL查询文档 elasticsearch 的查询依然是基于 JSON 风格的 DSL 来实现的。 1.1.DSL 查询分类 Elasticsearch 提供了基于 JSON 的 DSL(Domain Specific Language)来定义查…

2024年【广东省安全员B证第四批(项目负责人)】考试试卷及广东省安全员B证第四批(项目负责人)模拟考试题

题库来源:安全生产模拟考试一点通公众号小程序 2024年【广东省安全员B证第四批(项目负责人)】考试试卷及广东省安全员B证第四批(项目负责人)模拟考试题,包含广东省安全员B证第四批(项目负责人&…

Linux -- Nginx服务基础

4.1Nginx服务基础 Nginx(发音为[engine x])专为性能优化而开发,其最知名的优点是它的稳定性和低系统资源消 耗,以及对HTTP并发连接的高处理能力(单台物理服务器可支持30000~50000个并发请求),正因 为如此,…

振弦采集仪在隧道工程监测中的应用与效果评估

振弦采集仪在隧道工程监测中的应用与效果评估 振弦采集仪在隧道工程监测中起到了重要的作用,主要用于对隧道结构的振动进行监测和分析。通过测量振弦的振动频率和振幅,可以评估隧道结构的稳定性和安全性。 振弦采集仪的应用主要体现在以下几个方面&…

edge 指纹浏览,多账号

1.需求来源: 登录多个推特账号来测试 2.方法: 2.1 多个手机 pass 2.2 浏览器 --- 源于chrom浏览器多账号的应用 3.指纹浏览器可以实现,那么win11自带浏览器呢 看图:​​​​​​​ 新建个人资料后会打开新的浏览器--》可以不用账号…