1.HTTP背景知识

HTTP协议:HTTP(HyperText Transfer Protocol,超文本传输协议)的本质是运行在 TCP/IP 协议族之上的 “应用层协议”,核心作用是定义客户端(如浏览器、APP)与服务器之间的 “数据交互格式与流程”,最终实现 “超文本(如 HTML、图片、JSON)的传输与展示”。HTTP 协议的实质:应用层的 “请求 - 响应” 通信规则。

HTTP协议是客⼾端与服务器之间通信的基础。HTTP 是 “应用层的通信语言”—— 就像两个人对话需要共同语言(如中文、英文),客户端和服务器要交互数据,也需要提前约定 “如何发起请求、如何返回响应、数据用什么格式封装”,HTTP 就是这套约定好的 “语言规则”。
客⼾端通过HTTP协议向服务器发送请求,服务器收到请求后处理并返回响应。HTTP协议是⼀个⽆连接、⽆状态的协议。“无连接” 并非 “不建立连接”,而是指客户端与服务器的连接 “按需建立、用完即断”,不长期维持一个固定连接。“无状态” 是指服务器对每个 HTTP 请求的处理都是 “独立的、孤立的”,不保存客户端的任何 “上下文信息”—— 即服务器无法通过前一次请求的信息,判断当前请求是否来自同一个客户端。
与我们之前实现的单纯tcp或者udp服务器不同,之前的客户端与服务器在连接以后就一直进入循环进行收发消息,而HTTP协议只会按需建立连接,处理完一次客户端的请求以后就会断开连接。

为什么设计为无状态?核心是降低服务器负担:若服务器需要记忆每个客户端的状态(如登录状态、浏览记录),则需为每个客户端维护 “状态数据”,当并发量极高(如百万级用户)时,服务器的内存和性能会被严重消耗。

如何解决 “无状态” 的局限性?通过 “额外机制” 在无状态基础上实现 “状态保持”,最典型的是Cookie+Session。

认识URL :平时我们俗称的 "⽹址" 其实就是说的 URL

2.HTTP协议组成部分

HTTP请求通常包括四个部分:
1.请求行 [⽅法] + [url] + [版本]
2.请求报头 请求的属性, 冒号分割的键值对;每组属性之间使⽤ \r\n 分隔;遇到空⾏表⽰ Header部分结束
3.空白行 
4.请求正文 Body: 空⾏后⾯的内容都是Body. Body允许为空字符串. 如果Body存在, 则在Header中会有⼀个Content-Length属性来标识Body的⻓度;

HTTP响应格式与请求格式类似也是分为四个部分,只是第一行变变为状态行,且其中填写的内容有所不同。

3.HTTP的⽅法

HTTP的⽅法,常用的一般就是GET和POST方法
1. GET⽅法(重点)
⽤途:⽤于请求URL指定的资源。
⽰例: GET /index.html HTTP/1.1
特性:指定资源经服务器端解析后返回响应内容。
2. POST⽅法(重点)
⽤途:⽤于传输实体的主体,通常⽤于提交表单数据。
⽰例: POST /submit.cgi HTTP/1.1
特性:可以发送⼤量的数据给服务器,并且数据包含在请求体中。

4.HTTP的状态码

我们常用的状态码有404(Not Found),200(OK),403((Forbidden), 302(Redirect, 重定向), 504(Bad Gateway)

HTTP状态码301(永久重定向)和302(临时重定向)都依赖Location选项。以下是关于两者依赖 Location选项的详细说明:

HTTP状态码301(永久重定向)

当服务器返回HTTP 301状态码时,表⽰请求的资源已经被永久移动到新的位置。
在这种情况下,服务器会在响应中添加⼀个Location头部,⽤于指定资源的新位置。这个Location头部包含了新的URL地址,浏览器会⾃动重定向到该地址。
HTTP状态码302(临时重定向)
当服务器返回HTTP 302状态码时,表⽰请求的资源临时被移动到新的位置。
同样地,服务器也会在响应中添加⼀个Location头部来指定资源的新位置。浏览器会暂时使⽤新的URL进⾏后续的请求,但不会缓存这个重定向。
总结:⽆论是HTTP 301还是HTTP 302重定向,都需要依赖Location选项来指定资源的新位置。这个Location选项是⼀个标准的HTTP响应头部,⽤于告诉浏览器应该将请求重定向到哪个新的URL地址。
示例:
HTTP/1.1 302 Found\r\n
Location: https://www.new-url.com\r\n

服务器的职责仅在于通过重定向状态码和Location字段,向浏览器传递 “临时重定向的目标地址”,不参与后续的新请求 —— 既不会主动帮浏览器访问Location对应的 URL,也不会处理新请求的逻辑(新请求需由浏览器重新发起,服务器再按新请求的 URL 处理)。

HTTP常⻅报头Header
Content-Type: 数据类型(text/html等)
Content-Length: Body的⻓度
Host: 客⼾端告知服务器, 所请求的资源是在哪个主机的哪个端⼝上;
User-Agent: 声明⽤⼾的操作系统和浏览器版本信息;
Referer: 当前⻚⾯是从哪个⻚⾯跳转过来的;
Location: 搭配3xx状态码使⽤, 告诉客⼾端接下来要去哪⾥访问;
Cookie: ⽤于在客⼾端存储少量信息. 通常⽤于实现会话(session)的功能;
除此之外,HTTP还有一个Connection 字段,这是HTTP报⽂头的⼀部分,它主要⽤于控制和管理客⼾端与服务器之间的连接状态。

5.实现一个简单的服务器

实现⼀个最简单的HTTP服务器, 只在⽹⻚上输出 "hello world"; 只要我们按照HTTP协议的要求构造数据, 就很容易能做到.
代码运行实例:

如果我们将状态行改成302我们会得到以下的结果,我们的页面被重定向到了百度的首页,这就是重定向的用法

6.总结

如果想要实现与客户端浏览器更多详细的交互,需要对客户端的请求进行反序列化与序列化,然后根据方法做对应的处理,以及根据请求的url将外部根目录的文件填写到正文中,这个文件可以是Html,可以是图片等,然后响应信息并进行反序列化,将信息交给浏览器渲染,这样就能够实现一些好玩的后端与前端交互的网页。我的前面文章中写了一篇基于Tcp实现一个电商网站,感兴趣也可以浏览一下。

具体的代码已经上传我的gitee,需要的可以自取study_code: 学习路上写的一些代码 - Gitee.com

感谢浏览,如有错误可以指出。

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

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

相关文章

R 语言本身并不直接支持 Python 中 f“{series_matrix}.txt“ 这样的字符串字面量格式化(f-string)语法 glue函数

R 语言本身并不直接支持 Python 中 f"{series_matrix}.txt" 这样的字符串字面量格式化(f-string)语法。 在 R 中,要实现字符串拼接或格式化,你需要使用其他方法。下表对比了 Python f-string 和 R 中常见对应方法的主要…

【AI智能体】亮数据MCP Server × Dify:AI智能体获取实时影音数据就是这么简单

文章目录一、引言:AI 应用与实时影音数据的融合价值1、传统采集方式的痛点2、MCP Server 的创新价值二、亮数据 MCP Server 概览1、什么是 MCP Server?2、支持的影音平台和API接口3、产品特色亮点三、业务场景示例设计1、选定场景:竞品分析与…

从《Attention Is All You Need》深入理解Transformer

2017年的《Attention Is All You Need》论文提出的Transformer架构,不仅彻底改变了自然语言处理的格局,更为现代人工智能的发展奠定了坚实基础。本文将带你深入解析这一划时代模型的核心思想、技术细节及其深远影响。🔄 一、背景与动机&#…

【08】AI辅助编程完整的安卓二次商业实战-修改消息聊天框背景色-触发聊天让程序异常终止bug牵涉更多聊天消息发送优化处理-优雅草卓伊凡

【08】AI辅助编程完整的安卓二次商业实战-修改消息聊天框背景色-触发聊天让程序异常终止bug牵涉更多聊天消息发送优化处理-优雅草卓伊凡引言本次二开布局没有变,但是下一次整体布局会有变,不过本次开发发现朋友圈跳转功能的流程步骤也做了一定的变化。原…

心理调适与情绪管理实训室:支撑康养旅游人才心理能力培养

在康养休闲旅游服务专业的教学体系中,心理调适与情绪管理实训室作为关键教学场所,承担着培养学生心理服务能力、情绪疏导技能和人际沟通素养的重要任务。随着社会对康养旅游服务质量要求的提升,具备心理调适与情绪管理能力的专业人才日益受到…

Oracle sql tuning guide 翻译 Part 6 --- 优化器控制

第五部分优化器控制你可以用提示信息和初始化参数来影响优化器的判断和运作方式。Influencing the Optimizer Optimizer defaults are adequate for most operations, but not all.In some cases you may have information unknown to the optimizer, or need to tune the opti…

pthread_mutex_lock函数深度解析

摘要 pthread_mutex_lock是POSIX线程库中用于实现线程同步的核心函数,它通过对互斥锁的加锁操作来确保多个线程对共享资源的安全访问。本文从互斥锁的历史背景和发展脉络入手,详细解析了pthread_mutex_lock函数的设计理念、实现机制和使用场景。通过生产…

qt QBoxSet详解

1、概述QBoxSet 类代表箱形图中的一个条目。箱形条目是范围和由五个不同值构成的三个中值的图形表示。这五个值分别是:下极值、下四分位数、中位数、上四分位数和上极值。QBoxSet 提供了多种方法来设置和获取这些值,并且可以与 QBoxPlotSeries 和 QChart…

机器学习势函数(MLPF)入门:用DeePMD-kit加速亿级原子模拟

点击 “AladdinEdu,同学们用得起的【H卡】算力平台”,注册即送-H卡级别算力,80G大显存,按量计费,灵活弹性,顶级配置,学生更享专属优惠。 引言:从传统分子模拟到机器学习势函数的革命…

制作uniapp需要的storyboard全屏ios启动图

//锁定竖屏 plus.screen.lockOrientation("portrait-primary") // #endif首先准备启动图两个dc_launchscreen_portrait_background2x.png(750*1624)dc_launchscreen_portrait_background3x.png(1125*2436)LaunchScreen.storyboard文件内容如下<?xml version"…

OpenCV:答题卡识别

目录 一、项目原理 二、环境准备 三、核心代码实现 1. 导入必要库 2. 定义关键函数 坐标点排序函数 透视变换函数 轮廓排序函数 图像显示函数 3. 主程序实现 图像预处理 轮廓检测与答题卡定位 透视变换矫正 答案识别与评分 四、实现效果 本文将介绍如何使用 Ope…

机器宠物(以四足宠物为主)四肢与关节的系统化设计指南

1. 目标与约束先行 目标&#xff1a;自然步态&#xff08;走/小跑/小跳&#xff09;、安全亲和、低噪、跌倒不致损&#xff1b;支持地毯/木地板/瓷砖等家庭地面。约束&#xff1a;体重 1–6 kg&#xff1b;单次续航 ≥ 30–60 min&#xff1b;整机成本与可维护性&#xff1b;室…

spark hive presto doris 对substr函数的差异

Spark、Hive、Presto&#xff08;现更名为 Trino&#xff09;和 Doris&#xff08;原百度 Palo&#xff09;的 substr 函数在功能上都是用于截取字符串的子串&#xff0c;但在起始索引规则和参数含义上存在差异&#xff0c;这是导致结果不同的主要原因。以下是它们的具体区别&a…

开题报告之基于AI Agent智能问答的旅游网站

课题题目&#xff1a; 基于AI Agent智能问答的旅游网站 学生姓名&#xff1a; 学 号&#xff1a; 学 院&#xff1a; 专业年级&#xff1a; 指导教师&#xff1a; 开题报告word版&#xff1a; 开题报告word版 一、课题的研究目的和意义&#xff08;本…

HTB打靶复个小盘

文章目录jerrySauGoodGamesdevvotexpaper最近打了不少靶场&#xff0c;虽然难度都不算高&#xff0c;但也学到不少东西&#xff0c;中间去打了一周的实网渗透&#xff0c;打完后联系了一家企业准备面试&#xff0c;感觉面试准备的差不多了&#xff0c;回来继续打靶&#xff0c;…

云手机的技术架构可分为哪些

一、基础设施层为其提供计算、存储和网络资源&#xff0c;高性能的服务器 CPU 是关键&#xff0c;它需具备多核多线程处理能力&#xff0c;以同时支持多个云手机实例的运行&#xff0c;比如英特尔至强系列处理器&#xff0c;能够有效处理复杂的运算任务&#xff1b;通过虚拟化技…

[创业之路-585]:初创公司的保密安全与信息公开的效率提升

初创公司处于快速发展与资源有限的双重约束下&#xff0c;平衡保密安全与信息公开效率是生存与发展的关键。保密安全可保护核心资产&#xff08;如技术、客户数据、商业计划&#xff09;&#xff0c;避免被竞争对手模仿或恶意攻击&#xff1b;而信息公开的效率则直接影响团队协…

如何在Docker容器中为Stimulsoft BI Server配置HTTPS安全访问

在 Stimulsoft BI Server 2025.3.1 版本中&#xff0c;新增了在 Docker 容器中运行 BI Server 的能力。本文将为大家介绍如何在容器环境中为 BI Server 配置 HTTPS 协议的数据传输&#xff0c;从而实现安全、加密的访问。 为什么需要 HTTPS&#xff1f; **HTTPS&#xff08;S…

PPT中将图片裁剪为爱心等形状

在WPS演示和PowerPoint中&#xff0c;使用裁剪功能&#xff0c;可以将插入的图片裁剪为各种形状&#xff0c;例如心形、五角形、云朵形等等。WPS演示还可以指定裁剪的位置&#xff0c;更加灵活。一、在PowerPoint中裁剪图片为爱心等形状将图片插入到幻灯片后&#xff0c;选中图…

深入理解Docker网络:实现容器间的内部访问

目录一、利用宿主机 IP 外部端口实现容器互访1.思路2.示例操作3.访问测试4.工作原理5.总结二、Docker 容器之间的网络通信&#xff08;docker0 与自定义桥接网络&#xff09;1. docker0 简介2. 通过容器 IP 访问3. 自定义桥接网络&#xff08;推荐方式&#xff09;创建自定义网…