HTTP超文本传输协议

HTTP超文本传输协议

  • HTTP的基本原理
  • HTTP请求的组成
  • HTTP响应的组成
  • HTTP请求方法
  • HTTP状态码
  • HTTP的无状态性和持久连接
  • HTTPS(HTTP Secure)
  • Cookie 和 Session
    • Cookie
    • Session
    • 对比
  • 总结

HTTP(超文本传输协议)是一种用于从Web服务器传输超文本到本地浏览器的协议,是Web通信的基础。它属于应用层协议,主要用于客户端和服务器之间的数据交换,尤其是Web内容(如HTML文档、图片、视频等)的传输。HTTP是一个无状态、基于请求-响应模型的协议。
在这里插入图片描述

HTTP的基本原理

HTTP协议基于客户端-服务器模型,通常客户端是Web浏览器,服务器是提供资源的服务器。基本通信过程如下:

  • 客户端发送HTTP请求:用户在浏览器中输入网址或点击链接,浏览器向Web服务器发出HTTP请求,请求获取资源(网页、图片等)。
  • 服务器返回HTTP响应:Web服务器接收到请求后,处理请求并返回响应,通常包括所请求的资源、状态码、头部信息等。
  • 客户端解析响应:浏览器接收到服务器的响应后,解析其中的内容并呈现给用户。

HTTP请求的组成

HTTP请求主要由三部分组成:

  1. 请求行(Request Line):

    • 请求方法:HTTP方法(如GET、POST、PUT、DELETE、HEAD等),表示客户端希望对服务器资源执行的操作。
    • 请求URL:客户端请求的资源路径。
    • HTTP版本:请求使用的HTTP协议版本(如HTTP/1.1或HTTP/2)。
      例如,GET /index.html HTTP/1.1。
  2. 请求头(Request Headers):
    提供请求的附加信息,通常包括:

  • User-Agent:客户端浏览器的标识。
  • Host:请求的目标主机名。
  • Content-Type:请求体的媒体类型(在POST请求中常见)。
  • Accept:客户端能够处理的响应内容类型。
  • Cookie:客户端存储的会话信息。
  1. 请求体(Request Body):
    通常用于POST、PUT请求,包含发送到服务器的数据,如表单数据、JSON数据等。

HTTP响应的组成

HTTP响应也由三个主要部分组成:

  1. 响应行(Response Line):

    • HTTP版本:响应使用的HTTP协议版本。
    • 状态码:服务器返回的状态码,表示请求的处理结果。
    • 状态消息:对状态码的简短描述。
      例如,HTTP/1.1 200 OK。
  2. 响应头(Response Headers):
    包含关于服务器及响应的附加信息,常见的响应头包括:

  • Content-Type:响应体的数据类型(如text/html、application/json等)。
  • Content-Length:响应体的长度。
  • Server:服务器的名称及版本。
  • Set-Cookie:服务器返回的cookie信息。
  1. 响应体(Response Body):服务器返回的数据,通常是请求的资源内容,如HTML页面、图像文件、JSON数据等。

HTTP请求方法

HTTP协议定义了多个方法,常见的请求方法有:

  • GET:从服务器获取资源。GET请求不应有请求体(但可以有查询参数)。这是最常用的HTTP请求方法。
  • POST:将数据发送到服务器,常用于提交表单或上传文件。POST请求通常包含请求体,提交的数据可以是表单数据或JSON。
  • PUT:向服务器提交资源,并要求服务器存储该资源。PUT通常用来更新已有资源。
  • DELETE:请求删除指定资源。
  • HEAD:与GET类似,但只返回响应头,不返回响应体。通常用于获取资源的元信息。
  • OPTIONS:询问服务器支持哪些HTTP方法,通常用于跨域请求。
  • PATCH:部分更新资源,类似PUT,但只修改资源的部分内容。

HTTP状态码

HTTP状态码是服务器在处理请求时返回的数字代码,用来表示请求的结果。常见的HTTP状态码包括:

  • 1xx:信息性状态码:
    • 100 Continue:客户端可以继续发送请求。
  • 2xx:成功状态码:
    • 200 OK:请求成功,服务器返回请求的资源。
    • 201 Created:请求成功,且服务器创建了新资源。
    • 204 No Content:请求成功,但没有返回任何内容。
  • 3xx:重定向状态码:
    • 301 Moved Permanently:资源已永久移动到新的位置。
    • 302 Found:资源暂时移动到新的位置。
    • 304 Not Modified:资源未修改,可以使用缓存的版本。
  • 4xx:客户端错误状态码:
    • 400 Bad Request:请求无效,服务器无法理解。
    • 401 Unauthorized:需要身份验证。
    • 403 Forbidden:禁止访问,服务器理解请求但拒绝执行。
    • 404 Not Found:请求的资源不存在。
  • 5xx:服务器错误状态码:
    • 500 Internal Server Error:服务器内部错误。
    • 502 Bad Gateway:网关错误,服务器作为网关或代理时收到无效响应。
    • 503 Service Unavailable:服务器暂时不可用。

HTTP的无状态性和持久连接

  • 无状态性:HTTP协议本身是无状态的,这意味着每个请求都是独立的,服务器不记录客户端的状态信息。因此,每次请求都需要携带完整的信息(如身份验证信息、会话信息等)。
  • 持久连接:HTTP/1.1默认使用持久连接,意味着一次TCP连接可以处理多个HTTP请求/响应,这比每个请求都建立新的连接更加高效。持久连接通过Connection: keep-alive头部来控制。

HTTPS(HTTP Secure)

HTTPS是HTTP的安全版本,采用SSL/TLS协议加密HTTP请求和响应的数据,从而确保数据的机密性、完整性和身份认证。

  • SSL/TLS:为HTTP提供加密层(SSL已经被TLS取代,但两者通常被统称为SSL/TLS)。
  • 安全特性:
    • 数据加密:确保数据传输过程中不被窃听。
    • 身份验证:确保客户端和服务器的身份。
    • 数据完整性:确保数据在传输过程中未被篡改。

Cookie 和 Session

Cookie 和 Session 都是用于在客户端和服务器之间存储信息的技术,通常用来在用户与网站交互时保存状态和身份信息。尽管它们的目的相似,但工作原理和使用场景有所不同。
示例图:
在这里插入图片描述

Cookie

Cookie 是存储在用户浏览器中的小数据文件,用于保存用户的会话信息和其他状态信息。

  • 存储位置:保存在用户的浏览器中。
  • 存储内容:可以存储各种数据,如用户登录信息、首选项、购物车内容等。
  • 有效期:可以设置过期时间(如max-age或expires),如果不设置,默认是会话级别,即浏览器关闭后消失。
  • 传输方式:每次用户向服务器发送请求时,浏览器会自动将与该域名相关的cookie包含在请求头中(Cookie)。
  • 大小限制:每个cookie的大小通常不能超过4KB,且每个域名最多可以存储20个左右的cookie。

Session

Session 是服务器端用于保存用户会话信息的机制。与cookie不同,session的数据存储在服务器端,客户端仅保存一个唯一的标识符(即session ID)。

  • 存储位置:存储在服务器上。
  • 存储内容:可以存储大量数据,例如用户的身份、购物车内容、访问记录等。
  • 有效期:session的有效期通常是基于会话的,一般在用户关闭浏览器或设定的过期时间后失效。
  • 传输方式:服务器会在响应中将一个唯一的session ID通过cookie或URL传递给客户端,客户端每次请求时会携带这个ID,服务器通过ID找到对应的会话数据。

对比

在这里插入图片描述

总结

HTTP协议是Web通信的核心协议,它通过请求和响应模型提供了高效的网络通信。虽然HTTP本身是无状态的,随着HTTP/2和HTTPS的出现,Web的效率和安全性得到了显著提升。了解HTTP协议及其各种特性是开发Web应用和服务的基础。

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

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

相关文章

android TabLayout设置tab的时候文字默认居中,选中文字加粗

1、前言如题 TabLayout设置tab的时候文字默认居中,在TabLayout布局增加以上代码。 tab选中文字加粗,需要重写TabLayout的customview进行设置。 app:tabMaxWidth"0dp" app:tabGravity"fill" app:tabMode"fixed"

二叉树专题练习 ——基于罗勇军老师的《蓝桥杯算法入门C/C++》

目录 一、B3642 二叉树的遍历 - 洛谷 算法代码: 1. 代码结构 头文件和命名空间: 常量定义: 结构体定义: 前序遍历函数: 中序遍历函数: 后序遍历函数: 主函数: 2. 代码思路…

健康饮食,健康早餐

营养早餐最好包含4大类食物:谷薯类;碳水;蛋白质;膳食纤维。 1.优质碳水 作用:提供持久的能量,避免血糖大幅波动等 例如:全麦面包、红薯🍠、玉米🌽、土豆🥔、…

使用Linux服务器搭建。

前言: 本文将简述如何使用vmware模拟Linux搭建服务器环境。并配置相关安全措施。 本文工具: Centos Stream 9 图文详细安装记录_centos9安装教程详解-CSDN博客 xshell,服务器远程连接工具。 https://old.xp.cn/linux.html#install-show …

Artec Leo+Ray II 三维扫描仪成功为VR展数字化30吨重设备-沪敖3D

挑战:在贸易展上展示重达30吨的机械设备,同时克服设备搬运和展示的难题,减轻物流负担。。 解决方案:Artec Leo、Artec Ray II、Artec Studio、Blender、Unity、Microsoft HoloLens、HTC VIVE PRO 效果:在虚拟展厅中&am…

期权帮|如何判断股指期货市场是否值得做空呢?

锦鲤三三每日分享期权知识,帮助期权新手及时有效地掌握即市趋势与新资讯! 如何判断股指期货市场是否值得做空呢? 如果你觉得市场下跌的可能性较大,那么就可以考虑做空股指期货。但记住,做空有风险,操作需…

qt实践教学(编写一个代码生成工具)持续更新至完成———

前言: 我的想法是搭建一个和STM32cubemux类似的图形化代码生成工具,可以把我平时用到的代码整合一下全部放入这个软件中,做一个我自己专门的代码生成工具,我初步的想法是在下拉选框中拉取需要配置的功能,然后就弹出对…

操作系统:计算机架构里的幕后指挥官

Linxu系列 文章目录 Linxu系列前言一、操作系统的概念二、操作系统的工作原理三、操作系统对软硬件资源的管理总结 前言 在上篇博客中,我们介绍了冯诺依曼体系,,但是冯诺依曼体系结构出现的都是硬件设备,难道需要用户去操作、管理…

DNS 详细过程 与 ICMP

🌈 个人主页:Zfox_ 🔥 系列专栏:Linux 目录 一:🔥 DNS (Domain Name System) 快速了解🦋 DNS 背景🦋 域名简介🦋 真实地址查询 —— DNS🎀 域名的层级关系&am…

【C/C++算法】从浅到深学习--- 位操作算法(图文兼备 + 源码详解)

绪论:冲击蓝桥杯一起加油!! 每日激励:“不设限和自我肯定的心态:I can do all things。 — Stephen Curry” 绪论​: 今天总结了下位操作中常见的使用的方法,并且附加许多训练,通过…

【每日八股】计算机网络篇(二):TCP 和 UDP

目录 TCP 的头部结构?TCP 如何保证可靠传输?1. 确认应答机制2. 超时重传3. 数据排序与去重4. 流量控制5. 拥塞控制6. 校验和 TCP 的三次握手?第一次握手第二次握手第三次握手 TCP 为什么要三次握手?问题一:防止历史连接…

Tomcat-web服务器介绍以及安装部署

一、Tomcat简介 Tomcat是Apache软件基金会(Apache Software Foundation)的Jakarta 项目中的一个核心项目,由Apache、Sun和其他一些公司及个人共同开发而成。 Tomcat服务器是一个免费的开放源代码的Web应用服务器,属于轻量级应用…

【通俗讲解电子电路】——从零开始理解生活中的电路(三)

实际应用案例:生活中的电子电路 ——拆解你身边的“隐形工程师” 1. 手电筒电路:最简单的直流系统 电路组成 电源:2节1.5V电池(串联3V)。 开关:按钮控制回路通断。 LED:发光二极管&#xff…

部署Windows Server自带“工作文件夹”实现企业网盘功能完整步骤

前文已经讲解过Windows Server自带的“工作文件夹”功能,现以Windows Server 2025为例介绍部署工作文件夹的完整步骤: 为了确保您能够顺利部署和充分利用工作文件夹的功能,我将按照以下步骤进行讲解。 请注意,在域环境中部署工作…

详解LSM树

目录 什么是LSM树 磁盘结构与顺序IO LSM树结构 LSM树的写入 SSTable合并 LSM树的读取 LSM树的删除 总结 什么是LSM树 LSM 树全名日志结构合并树(Log-Structured Merge Tree),是一种用于存储和管理数据的树状数据结构,常用…

ABAP语言的动态编程(3) - data reference 对象

如果数据对象的类型在运行时才知道,就需要用到 data reference 对象。 Data references can point to any data objects or to their parts (components, rows of internal tables, or sections specified by offsets and lengths) 也就是说 data reference 对象其实…

Excel的行高、列宽单位不统一?还是LaTeX靠谱

想要生成田字格、米字格、带拼音标准,方便小学生书法和练字。Word,Excel之类所见即所得是最容易相当的方式。但它们处理带田字格之类背景时,如果没有专用模板、奇奇怪怪的插件,使用起来会碰到各种问题。比如,Word里面用…

Stepdown SLOPE for Controlled Feature Selection

文章:《Stepdown SLOPE for Controlled Feature Selection》 如何保证错选率可控地特征选择???? 研究背景 现有SLOPE方法主要关注FDR(错误发现率)控制,但在实际应用中需更严格地控…

mysql空间占用

1、查询数据库占用空间 可以通过查询 information_schema 系统数据库中的 SCHEMATA 表和 TABLES 表来获取数据库占用的空间大小。 SELECT table_schema AS 数据库名称,SUM(data_length index_length) / 1024 / 1024 AS 占用空间(MB) FROM information_schema.TABLES GROUP BY…

量子关联特性的多维度探索:五量子比特星型系统与两量子比特系统的对比分析

模拟一个五量子比特系统,其中四个量子比特(编号为1, 2, 3, 4)分别与第五个量子比特(编号为5)耦合,形成一个星型结构。分析量子比特1和2的纠缠熵随时间的变化。 系统的哈密顿量H描述了量子比特间的相互作用…