HTTP深度指南:协议结构、请求方法与状态码

news2025/1/10 11:55:03

详解HTTP

    • HTTP教程
    • HTTP消息结构
    • HTTP状态码
    • HTTP和HTTPS

HTTP教程

HTTP(超文本传输协议,HyperText Transfer Protocol)是一种用于分布式、协作式、超媒体信息系统的应用层协议。*

HTTP是一个基于TCP/IP通信协议来传递数据的(HTML文件,图片文件)

基本工作原理:

客户端发送请求,服务器返回响应。

在这里插入图片描述

请求流程:

  • 建立连接:客户端与服务器之间建立连接。在传统的 HTTP 中,这是基于 TCP/IP 协议的。最近的 HTTP/2 和 HTTP/3 则使用了更先进的传输层协议,例如基于 TCP 的二进制协议(HTTP/2)或基于 UDP 的 QUIC 协议(HTTP/3)。
  • 发送请求:客户端向服务器发送请求,请求中包含要访问的资源的 URL、请求方法(GET、POST、PUT、DELETE 等)、请求头(例如,Accept、User-Agent)以及可选的请求体(对于 POST 或 PUT 请求)。
  • 处理请求:服务器接收到请求后,根据请求中的信息找到相应的资源,执行相应的处理操作。这可能涉及从数据库中检索数据、生成动态内容或者简单地返回静态文件。
  • 发送响应:服务器将处理后的结果封装在响应中,并将其发送回客户端。响应包含状态码(用于指示请求的成功或失败)、响应头(例如,Content-Type、Content-Length)以及可选的响应体(例如,HTML 页面、图像数据)。
  • 关闭连接:在完成请求-响应周期后,客户端和服务器之间的连接可以被关闭,除非使用了持久连接(如 HTTP/1.1 中的 keep-alive)。

HTTP 的三点注意事项

1.HTTP是无连接的,即每次连接只处理一个请求,服务器处理完客户请求,并收到客户的应答后,就断开连接。

2.HTTP是无状态的,即HTTP协议对事务处理没有记忆能力,处理一件事情并不会有记忆(类比鱼的记忆),所以当后续的处理需要先前的消息时,需要重传。

3.HTTP是媒体独立的,主要客户端和服务器知道如何处理数据内容,任何的数据内容都可以通过HTTP传送,客户端以及服务器指定使用适合的 MIME-type 内容类型。

HTTP消息结构

客户端请求消息

客户端发送一个HTTP请求到服务器的请求消息包括以下格式:请求行(请求行)、请求头部(头)、空行和请求数据四个部分组成.

在这里插入图片描述
在这里插入图片描述

抓包得到的截图(可以看看)

在这里插入图片描述

服务器响应消息

HTTP 响应也由四个部分组成,分别是:状态行、消息报头、空行和响应正文。
在这里插入图片描述

响应结果:

在这里插入图片描述

常见的响应头信息,可以参考

HTTP 响应头信息 | 菜鸟教程

HTTP请求方法

HTTP 定义了一组请求方法,以表明要对给定资源执行的操作。指示针对给定资源要执行的期望动作。

  • 请求方法定义

    HTTP1.0 定义了三种请求方法: GET, POST 和 HEAD 方法。

    HTTP1.1 新增了六种请求方法:OPTIONS、PUT、PATCH、DELETE、TRACE 和 CONNECT 方法。

GET方法请求一个指定资源的表示形式,使用GET的请求应该仅用于获取数据,不能对服务器上的资源做出任何的变更。(应该是幂等的(即多次重复的请求应该产生相同的结果))

HEAD方法请求一个与GET请求的响应的响应相同,但没有响应体。

POST用于将实体提交到指定的资源的方法,通常会导致服务器上的状态变化或副作用,并且不一定是幂等的。

PUT用于向服务器上传资源,通常用于更新已存在的资源或创建新的资源。PUT 请求应该是幂等的。

DELETE方法删除指定的资源,DELETE 请求应该是幂等的。

CONNECT方法建立一个到由目标资源标识的服务器的隧道,通常用于代理服务器。

OPTIONS用于请求服务器返回支持的 HTTP 方法和其他选项。

TRACE回显服务器收到的请求,主要用于测试或诊断。

PATCH 用于在请求-响应链上的每个节点获取传输路径,修改用于对资源应用部分的方法。

HTTP状态码

当浏览者访问一个网页时,浏览者的浏览器会向网页所在服务器发出请求。当浏览器接收并显示网页前,此网页所在的服务器会返回一个包含 HTTP 状态码的信息头(server header)用以响应浏览器的请求。

HTTP 状态码由三个十进制数字组成,第一个十进制数字定义了状态码的类型。响应分为五类:信息响应(100–199),成功响应(200–299),重定向(300–399),客户端错误(400–499)和服务器错误 (500–599):

常见的HTTP Status Code

  • 1xx(信息性状态码):表示接收的请求正在处理。
  • 2xx(成功状态码):表示请求正常处理完毕。
  • 3xx(重定向状态码):需要后续操作才能完成这一请求。
  • 4xx(客户端错误状态码):表示请求包含语法错误或无法完成。
  • 5xx(服务器错误状态码):服务器在处理请求的过程中发生了错误。

一些常见的状态码:

200OK请求成功。一般用于GET与POST请求
201Created已创建。成功请求并创建了新的资源
301Moved Permanently永久移动。请求的资源已被永久的移动到新URI,返回信息会包括新的URI,浏览器会自动定向到新URI。今后任何新的请求都应使用新的URI代替
302Found临时移动。与301类似。但资源只是临时被移动。客户端应继续使用原有URI
400Bad Request客户端请求的语法错误,服务器无法理解
401Unauthorized请求要求用户的身份认证
402Payment Required保留,将来使用
403Forbidden服务器理解请求客户端的请求,但是拒绝执行此请求
404Not Found服务器无法根据客户端的请求找到资源(网页)。通过此代码,网站设计人员可设置"您所请求的资源无法找到"的个性页面
405Method Not Allowed客户端请求中的方法被禁止
500Internal Server Error服务器内部错误,无法完成请求
501Not Implemented服务器不支持请求的功能,无法完成请求
502Bad Gateway作为网关或者代理工作的服务器尝试执行请求时,从远程服务器接收到了一个无效的响应
503Service Unavailable由于超载或系统维护,服务器暂时的无法处理客户端的请求。延时的长度可包含在服务器的Retry-After头信息中
504Gateway Time-out充当网关或代理的服务器,未及时从远端服务器获取请求
505HTTP Version not supported服务器不支持请求的HTTP协议的版本,无法完成处理
  • 301/302状态码

    301,永久移动。也就是说,如果一个是一个经过中台处理后的跳转链接,那么除了第一次会去访问中台后台请求处理,后续每次都不会访问。
    302,临时移动。同样是一个经过中台处理后的跳转链接,但是每次重新访问该链接,都会去先请求中台后台先处理。

HTTP和HTTPS

**HTTP(超文本传输协议,Hypertext Transfer Protocol)**是一种用于从网络传输超文本到本地浏览器的传输协议。它定义了客户端与服务器之间请求和响应的格式。HTTP 工作在 TCP/IP 模型之上,通常使用端口 80

在这里插入图片描述

**HTTPS(超文本传输安全协议,Hypertext Transfer Protocol Secure)**是 HTTP 的安全版本,它在 HTTP 下增加了 SSL/TLS 协议,提供了数据加密、完整性校验和身份验证。HTTPS 通常使用端口 443

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

HTTPS和HTTP的区别主要如下:

1、https协议需要到ca申请证书,一般免费证书较少,因而需要一定费用。

2、http是超文本传输协议,信息是明文传输,https则是具有安全性的ssl加密传输协议。

3、http和https使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443。

4、http的连接很简单,是无状态的;HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,比http协议安全。

  • 面试题 跟http比,https会对性能造成哪些影响?
    1. 加密和解密:HTTPS 的加密和解密过程需要额外的计算资源,这可能会导致与纯文本传输的 HTTP 相比有轻微的性能下降。
    2. 握手过程:HTTPS 连接的建立需要一个握手过程,这包括密钥交换和认证步骤,可能会引入额外的延迟,尤其是在首次建立连接时。
    3. CPU 使用率:由于加密和解密过程,HTTPS 可能会增加 CPU 的使用率,这在高负载期间可能会对服务器性能产生影响。相较于HTTP,网络负载可能会慢2到100倍。
    4. 延迟:由于建立安全连接和加密/解密数据所需的复杂步骤,HTTPS 可能会增加延迟,从而影响页面加载时间。
    5. 缓存:HTTPS 的缓存机制受到限制,因为加密内容通常不能被中间代理缓存,这可能导致直接从服务器获取数据,从而延长加载时间。

本次学习笔记,很多来源于菜鸟教程,欢迎前往官网深入学习。

HTTP 教程 | 菜鸟教程

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【源码】[完美接单]亲测双端获取通讯录、相册、短信定位源码

源码介绍 无hb源码,需要反编译。 此款修复了逻辑,现在全部能获取。包括华为鸿蒙。 安卓可获取:短信定位相册通讯录 IOS可获取:定位相册通讯录 源码截图 CD:获取方式联系小编 微信:uucodes 公众号&…

7天精通Web APIs——-Bom操作(理论+实战)(第五天)

一、window对象 1.1 window对象和bom的关系 首先理解dom和bom之间的关系 显然bom的范围比较大 bom的全称为浏览器对象模型 window是bom的核心对象,window里面有很多属性和方法,用于实现浏览器与 JavaScript 代码之间的交互。作为 JavaScript 的全局对…

Vue中使用$t(‘xxx‘)实现中英文切换;

(原文链接) 介绍 {{$t(key)}} :是VueI18n插件提供的函数,主要用于根据当前语言环境返回对应的翻译文本,以便在页面上显示多语言内容。 key:作为参数传递给函数$t()的字符串,用于指定需要翻译的…

快速入门 Postman Mock Server 的使用

Postman 作为一个功能强大的 API 开发工具,凭借 Mock Servers 功能,使得开发者能够轻松而高效地模拟服务器环境,加快开发与测试进程。 启动 Mock Servers 服务 当你在 Postman 中创建一个新的项目时,系统默认并不会显示 Mock Se…

Python爬虫之selenium,有验证码模拟登录

一. 前言 在学习Selenium之前,通过request.get()或者.post(),很难获取网站所加载的动态数据,通过Selenium强大的自动化功能、多浏览器支持、跨平台支持等优点,让我轻松获取一些之前很难获取的数据,这次的案例也是结合之前的所学知…

Window server 2012搭建FTP

禁止废话,直接上图 !!! 注意:如果点击角色添加保存: Server Manager Error - Server Manager is collecting inventory data. Wizard will be available after data collection finishes 解决方案&#x…

Baidu Comate——让软件研发更高效、更智能

个人名片: 😊作者简介:一名大二在校生 🤡 个人主页:坠入暮云间x 🐼座右铭:给自己一个梦想,给世界一个惊喜。 🎅**学习目标: 坚持每一次的学习打卡 文章目录 一、Baidu Co…

JAVA链表相关习题2

1.反转一个单链表。 . - 力扣(LeetCode) //2在1前面 //1在3前面 //ListNode curhead.next //head.nextnull(翻转后头节点变为最后一个节点) // while(cur ! null) { //记录 当前需要翻转节点的下一个节点 ListNode curNext cu…

9、String类型和基本数据类型转换(Java)

String类型和基本数据类型转换 1、基本数据类型转String类型2、String类型转基本数据类型⭐ 1、基本数据类型转String类型 Java中String类型是字符串类型,是用 “ ” 双引号括起来的内容,所以基本数据类型转String类型直接+“ ”即可。&…

损失一件外套?

2024/05/07,晴 碎碎念一波! 早上洗漱完要出门时,发现自己昨天穿的外套不见了!!!外套上身效果很不错,买了1年多穿的频率非常高,现在丢了还真挺可惜。 衣服口袋有一个耳机&#xff0…

stm32单片机遇到的问题(持续更新)

flymcu下载问题一直显示连接,实际是连接不上 参考,软件一键下载电路等 使用flymcu下载程序过程中,检测两个地方**,第一,两个boot引脚在下载和硬件运行不同的连接方式** BOOT1x,BOOT00:最常用的模…

六西格玛备考攻略:无从下手?一文让你豁然开朗

当你决定备考六西格玛时,可能会感到有些无从下手。毕竟,这是一个涉及多个领域和方面的综合性考试,需要掌握的知识点和技能也非常广泛。但是,只要你有一个清晰的学习计划和一些有效的备考方法,就能够顺利地通过考试。以…

hadoop学习---基于Hive的教育平台数据仓库分析案例(三)

衔接第一部分,第一部分请点击:基于Hive的教育平台数据仓库分析案例(一) 衔接第二部分,第二部分请点击:基于Hive的教育平台数据仓库分析案例(二) 学生出勤模块(全量分析)&#xff1a…

Offer必备算法36_贪心算法三_七道力扣题详解(由易到难)

目录 ①力扣455. 分发饼干 解析代码 ②力扣553. 最优除法 解析代码 ③力扣45. 跳跃游戏 II 解析代码1_动态规划 解析代码2_贪心 ④力扣55. 跳跃游戏 解析代码 ⑤力扣134. 加油站 解析代码 ⑥力扣738. 单调递增的数字 解析代码 ⑦力扣991. 坏了的计算器 解析代码…

Adnroid 异常开机半屏重启代码分析

K1/K2包括家教机H9/H10,异常重启的时候都会开机动画都会出现半屏现象: 为了造这个现象,用eclipse把system_process stop掉就可以看到现象了: 由于开机动画是由SurfaceFlinger服务启动,出现异常会调用SurfaceFling…

特斯拉CEO马斯克访华,或加速FSD技术在中国的落地

特斯拉首席执行官埃隆马斯克于4月底进行了中国之旅,这一访问被业内人士认为可能加速特斯拉FSD(Full Self-Drive,完全自动驾驶)技术在中国的应用。业内专家指出,马斯克的此番到访可能会对中国自动驾驶市场产生深远影响&…

视频转GIF动图:一键批量操作技巧,轻松实现动态图像转换

在数字媒体时代,GIF动图因其小巧、循环播放的特性,在网络传播中占据了重要地位。而将视频转换为GIF动图,不仅可以快速捕捉视频中的精彩瞬间,还能为社交媒体、网站和博客等内容创作增添生动与活力。本文将介绍如何通过一键批量操作…

【how2j JQuery部分】课后题答案及相关笔记

练习题 <script src"jquery.min.js"></script><script>$(function(){$(tr:odd).css({"background-color":"#f8f8f8"});}); </script> <style> table{border-collapse:collapse;width:90%;} tr{border-bottom-sty…

【spark】win10 pyspark3.5.1 安装超级简单

下载地址&#xff1a;https://spark.apache.org/downloads.html 下载完成&#xff1a; 复制文件到自己的路径下&#xff0c;路径最好不要有中文、空格&#xff1b; 解压tgz文件&#xff1a; 修改环境变量&#xff1a; 创建SPARK_HOME&#xff1a; D:\software_download\spar…

实测幻方新出的超强AI大模型,中文能力对比GPT4.0不落下风

目前从网上的消息来看&#xff0c;DeepSeek中文综合能力&#xff08;AlignBench&#xff09;开源模型中最强&#xff0c;与GPT-4-Turbo&#xff0c;文心4.0等闭源模型在评测中处于同一梯队。 话不多说&#xff0c;我们开测&#xff01; 1.首先我们来让他直接来一段逻辑推理【并…