首页 > 其他分享 >HTTP协议基本知识点:工作原理、http请求、响应、连接以及缓存机制

HTTP协议基本知识点:工作原理、http请求、响应、连接以及缓存机制

时间:2024-09-07 11:25:19浏览次数:13  
标签:知识点 缓存 HTTP 请求 响应 http 资源 客户端

目录

一、HTTP概述

二、HTTP的版本

三、HTTP请求

1.请求方法

2.请求头

四、HTTP响应

1.状态码

2.响应头

五、HTTP持久连接

六、缓存机制

1.CacheControl

2.ETag

3.LastModified

七、安全性

八、使用场景

总结


 

一、HTTP概述

 全称:超文本传输协议(HyperText Transfer Protocol)

 功能:用于在客户端(如浏览器)和服务器之间传输超文本数据(如HTML文档)。

 工作原理:基于请求响应模型客户端发送请求,服务器返回响应

448475d0cd064aa1b2b187a1e139f5fd.png

二、HTTP的版本

e078cd23517941f987d0a4b2565f48da.png

HTTP/0.9:最初版本,仅支持GET请求,传输简单的HTML文档。

HTTP/1.0:引入了状态码、请求头和响应头,支持更多请求方法。

HTTP/1.1:当前广泛使用的版本,支持持久连接、分块传输等特性。

HTTP/2:引入了二进制分帧、多路复用等技术,提高了传输效率。

HTTP/3:基于QUIC协议,进一步减少延迟和提高安全性。

三、HTTP请求

1.请求方法

  •    GET:请求指定资源,数据通过URL传递。
  •    POST:向服务器提交数据,数据在请求体中。
  •    PUT:更新指定资源。
  •    DELETE:删除指定资源。
  •    HEAD:获取响应头,不返回响应体。
  •    OPTIONS:查询服务器支持的请求方法。

2.请求头

包含客户端信息、请求类型、接受的内容类型等,常见头部有:

  •      `Host`:请求的主机名。
  •      `UserAgent`:客户端软件信息。
  •      `Accept`:可接受的内容类型。
  •      `ContentType`:请求体的数据类型。

四、HTTP响应

1.状态码

指示请求的处理结果。

  •    1xx:信息性状态码(如100 Continue)。
  •    2xx:成功状态码(如200 OK)。
  •    3xx:重定向状态码(如301 Moved Permanently)。
  •    4xx:客户端错误状态码(如404 Not Found)。
  •    5xx:服务器错误状态码(如500 Internal Server Error)。

2.响应头

包含服务器信息、响应类型、缓存控制等。

常见头部:

  •      `ContentType`:响应体的数据类型。
  •      `ContentLength`:响应体的长度。
  •      `SetCookie`:设置客户端Cookie。

五、HTTP持久连接

HTTP/1.1默认使用持久连接,允许在同一连接上发送多个请求和响应,减少连接建立的开销。

Connection头:可以通过`Connection: keepalive`来保持连接。

六、缓存机制

1.CacheControl

用于控制缓存行为的响应头(如是否缓存、缓存的持续时间、以及缓存的隐私设置)。

  • no-cache: 强制要求缓存重新验证。
  • private: 表示响应仅可以被用户的浏览器缓存。
  • public: 表示响应可以被任何缓存区缓存。
  • max-age=<seconds>: 指定资源的最大有效时间,单位为秒。
  • no-store: 不缓存任何内容。

2.ETag

资源的唯一标识符,用于判断资源是否被修改。

  • 当客户端请求资源时,服务器返回资源及其ETag。
  • 客户端在下次请求时可以使用If-None-Match头部,携带上次的ETag。
  • 如果资源没有变化,服务器返回304 Not Modified响应,客户端可以继续使用缓存的版本。

3.LastModified

资源最后修改的时间,可以帮助客户端判断资源是否需要更新。

  • 服务器在响应中发送Last-Modified头部,表示资源的最后修改时间。
  • 客户端可以在后续请求中使用If-Modified-Since头部,携带上次的修改时间。
  • 如果资源自那时以来没有变化,服务器返回304 Not Modified响应。

七、安全性

HTTP本身是不提供加密的(明文传输),所以数据在传输过程中可能会出现被窃取或篡改的情况。

八、使用场景

 网页浏览:这种是最常见的。

 API通信:RESTful API通常会使用HTTP进行数据交换。

 文件下载:通过HTTP协议来下载文件。

总结

HTTP是一种用在客户端和服务器之间传输超文本数据的应用层协议,允许用户通过访问网页和其他资源。它本身是一个无状态的协议(每个请求都是独立的,就是说服务器是不会记住之前的请求状态,我们需要使用其他的机制来管理用户状态),而且数据在传输过程中是明文的,容易被窃听和篡改。

 

标签:知识点,缓存,HTTP,请求,响应,http,资源,客户端
From: https://blog.csdn.net/weixin_61742549/article/details/141901505

相关文章

  • HttpClient的快速入门使用
    目录一、介绍二、Get方式请求发送入门案例 实现步骤: 测试结果:三、Post方式请求发送入门案例 实现步骤:测试结果:一、介绍HttpClient是ApacheJakartaCommon下的子项目,可以用来提供高效的、最新的、功能丰富的支持HTTP协议的客户端编程工具包,并且它支持HTTP......
  • python PaddleOCR库用法及知识点详解
    识别图片的设置https://blog.csdn.net/f2315895270/article/details/128147744?utm_medium=distribute.pc_relevant.none-task-blog-2~default~baidujs_baidulandingword~default-0-128147744-blog-89082526.pc_relevant_default&spm=1001.2101.3001.4242.1&utm_relevant_in......
  • 记一次.net使用httpclient中代码中使用response.EnsureSuccessStatusCode()引发的误会
    1.问题背景有一个拉取第三方数据存储到本地的需求,使用.net开发,使用httpClient发送post请求。第三方接口里面会校验我们发送的json数据,如果我们的数据格式不正确会抛出异常。2.返回的结果不同?第一步,我用postman做了测试,对方的接口可以调用,正确和错误都可以返回。第二步,我使用代......
  • 简单比较 http https http2,我们要如何把http升级为https
    ......
  • 什么是网站的HTTPS证书?如何为网站配置HTTPS证书?
    随着电子商务、在线银行和个人数据存储等活动的普及,保护数据传输的安全性变得尤为关键。HTTPS协议正是为了应对这一挑战而设计的,它通过SSL/TLS证书来确保数据传输的安全性和网站的可信度。本文将详细介绍HTTPS证书的作用以及如何为您的网站添加这种证书。HTTPS证书的重要性HTTPS(全......
  • 【OpenHarmony】鸿蒙南向开发保姆级知识点汇总~
    OpenHarmony的技术架构和设计使得它能够适应不同的设备和场景,无论是智能手机、平板电脑、智能穿戴设备还是其他智能硬件,OpenHarmony都能提供一致的用户体验和开发体验。这使得开发者能够更加高效地开发适用于多种设备的软件,同时也为用户提供了更加统一和流畅的使用体验。由......
  • 实验:VMware上 Windows 数字证书制作与HTTPS部署
    大家吼啊,这篇文章才是真正意义上今天写的,前两篇算是库存了哈哈哈这个实验分为证书的签发和网站的部署两大部分。包含了网络基础设施的配置、DNS服务的安装配置、IIS服务的安装和配置,WEB搭建以及AD证书服务(ADCS)的安装和配置。由于涉及的部分比较多,所以看着内容和步骤会有......
  • HTTP与TCP的关系是什么?HTTP 的端口有什么意义?
    一、HTTP与TCP的关系HTTP(超文本传输协议)是建立在TCP(传输控制协议)之上的应用层协议。1.依赖关系•HTTP依赖TCP提供的可靠数据传输服务。TCP确保数据在网络中准确、有序地传输,并且能够处理数据包丢失、重复和乱序等问题。如果没有TCP的可靠性保障,HTTP传输的数据......
  • 如何使用 Bittly 创建一个本地 HTTP 服务器
    Bittly支持在本地创建HTTP服务器。通过配置该服务器,可以根据匹配规则自动响应HTTP请求,并通过变量和脚本实现动态数据内容的响应。此外,Bittly的本地HTTP服务器还支持配置文档根目录,直接将指定路径作为Web目录进行访问,无需配置完整的HTTP服务器。Bittly的HTTP......
  • java知识点——String类常用方法
    字符串常用方法: 方法描述int字符串.length()获取字符串长度boolean字符串.equals比较字符串内容是否相等boolean字符串1.equalsIgnoreCase(字符串2)不分大小写比较内容String字符串.toLowerCase()将字符串全部转成小写的String字符串.toUpperCas......