[网络原理] HTTP协议

news2024/12/26 1:18:35

要珍惜时间呀

文章目录

  • 1. HTTP协议概念
  • 2. HTTP协议格式
  • 2.URL
  • 3. GET与POST方法
    • 3.1 GET方法
    • 3.2 POST方法
    • 3.3 GET与POST的区别



1. HTTP协议概念

HTTP协议是应用层协议,TCP/IP协议为传输层协议,负责传输数据.而HTTP协议相当于对传输的数据据怎样处理和使用进行说明.
每次,我们访问网站的时候,都会给网站的服务器发送一个HTTP请求,服务器收到请求后,会返回一个HTTP响应.如下图所示.
在这里插入图片描述

2. HTTP协议格式

下图,为一个HTTP请求的格式.
首行,为一个 GET方法+URL+版本号.
之后,为Header,是几组由冒号分隔的键值对.每一组通过’\n’区分.
Header之后会有一个空行,代表Header部分结束,之后为body部分,这里是GET方法,body部分为空.
在这里插入图片描述

下图是HTTP响应格式,首行为版本号+状态码+状态码解释
之后为Header
空行之后为body.
在这里插入图片描述

2.URL

URL也就是我们认识的网址,为统一资源定位符.
在这里插入图片描述
https://editor.csdn.net/md?articleId=130078962
这是正常情况下的一个网址,我们可以看以下各个部分,有些东西被省略了.

  1. https,为协议方案名,常用的有http,https
  2. user.pass,现在网站身份信息不通过URL了,可以省略.
  3. editor.csdn.net,为服务器域名地址,可通过DNS解析成具体地址.
  4. 服务器端口号,当服务器端口号被省略时,浏览器可根据协议类型,自动决定端口号.例如http默认端口号为80,https默认端口号为443
  5. /md,为一个带层次的文件路径.
  6. articleId=130078962,为querystring,一个查询字符串,本质上是一个键值对结构,用&分隔.
  7. 片段标识符,这里省略了片段标识符,片段标识符主要用于页内跳转.

3. GET与POST方法

3.1 GET方法

GET方法大多用于获取资源
直接输入网址,浏览器就会发送一个GET请求.另外,使用JavaScript中的ajax也能构造GET请求.
如下图,是浏览器向CSDN服务器发送的GET请求.

GET https://csdnimg.cn/public/common/libs/jquery/jquery-1.9.1.min.js?1682498704940 HTTP/1.1
Host: csdnimg.cn
Connection: keep-alive
sec-ch-ua: "Not-A.Brand";v="24", "Chromium";v="14"
sec-ch-ua-mobile: ?0
User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/108.0.5359.95 Safari/537.36
sec-ch-ua-platform: "Windows"
Accept: */*
Sec-Fetch-Site: cross-site
Sec-Fetch-Mode: no-cors
Sec-Fetch-Dest: script
Referer: https://editor.csdn.net/md?articleId=130078962
Accept-Encoding: gzip, deflate, br
Accept-Language: zh-CN,zh;q=0.9


GRT请求的特点

  1. 首行,第一部分为GET
  2. body部分为空
  3. querystring可以为空,也可不为空
  4. Header部分有若干键值对结构.

3.2 POST方法

POST方法大多用于用户向服务器提交数据
可通过HTML中的form表单或者JavaScript中的ajax构造POST请求.
POST请求的特点

如下图

POST https://bizapi.csdn.net/blog-console-api/v3/mdeditor/saveArticle HTTP/1.1
Host: bizapi.csdn.net
Connection: keep-alive
Content-Length: 9865
sec-ch-ua: "Not-A.Brand";v="24", "Chromium";v="14"
Accept-Encoding: gzip, deflate, br
Accept-Language: zh-CN,zh;q=0.9
Content-Type: application/json
Cookie: uuid_tt_dd=10_18817831390-1675480237489-521231; UserName=scsery; UserInfo=7e02a966ece7443dba337ad644b10826; UserToken=7e02a966ece7443dba337ad644b10826; UserNick=%E8%8F%A0%E8%90%9D%E7%8C%AByena; AU=432; UN=scsery; 

{"id":130078962,"title":"[网络原理] HTTP协议","markdowncontent":"\n> 要珍惜时间呀\n\n@

POST请求特点

  1. 首行第一部分为POST
  2. body部分一般不为空,body内的数据格式通过Header中的Content-Type指定,body中的数据长度通过Header中的Content-Length指定.
  3. querystring部分一般为空
  4. Header部分由一些键值对组成.

3.3 GET与POST的区别

  1. 语义不同,GET一般用于获取数据,POST一般用于提交数据.
  2. GET的body一般为空,数据通过querystring传递,而POST的querystring一般为空,数据通过body传送.
  3. GET可以被缓存,POST不能被缓存.
  4. GET的请求一般是幂等的,POST的请求一般是不幂等的.(请求多次.得到的结果一样,就是幂等.)

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

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

相关文章

Mininet+Ryu安装教程

最近要做一个Mininet的网络环境,网络设备由Mininet来模拟,SDN控制器用Ryu来做,为了避免每次重新做再去翻查资料,我在这里系统地整理一遍 硬件需求 我在 VMWare Workstation 16 Player虚拟机上运行的Ubuntu 22.04.1 硬件需求内存…

供应链 | 需求不确定情况下的物料需求规划: 基于随机优化的研究

作者:Simon Thevenin, Yossiri Adulyasak, Jean-Francois Cordeau​ 引用:Thevenin S, Adulyasak Y, Cordeau J F. Material requirements planning under demand uncertainty using stochastic optimization[J]. Production and Operations Management,…

react的项目实战 2

入口文件引入了app这个组件 app这个组件又引入了header这个组件。 然后外面引入这个组件 进行页面的显示 它不会影响到其他页面的组件的样式。 ​​​​​​​

面试必备:接口自动化测试精选面试题大全

目录 一、 请问你是如何做接口测试的? 二、接口测试如何设计测试用例? 三、接口测试执行中需要比对数据库吗? 四、接口测试质量评估标准是什么? 五、接口产生的垃圾数据如何清理 六、其他接口要先获取接口信息,如…

利用wenda实现本地多模态数据的知识获取和推理

近年来,大型语言模型(LLM)技术取得了令人瞩目的进展,为自然语言处理领域带来了巨大的变革,但是大多数LLM都面临着领域适应性的问题,因为它们使用的数据都是公开的数据,在国内,有很多…

Day960.架构现代化-微服务 -遗留系统现代化实战

架构现代化-微服务 Hi,我是阿昌,今天学习记录的是关于架构现代化-微服务的内容。 在自治气泡模式的基础上,通过事件拦截来实现数据同步,给气泡和遗留系统之间又加上 API 访问这个通信渠道。 这时的自治气泡就和真正的微服务差不…

Rust - 变量与数据的交互方式(move)

变量与数据的交互方式 - 移动 Rust 中的多个变量可以采用一种比较独特的方式和同一个数据进行交互,如下代码所示,将变量x的值赋给y: fn main() {let x 1;let y x; }我们大概可以推论出上述代码的原理:将1这个整数绑定给x变量&…

Mybatis读取和存储json类型的数据

目录 一、测试使用JSONObject来获取json二、设置TableName的autoResultMap为true,TableField的typeHandler为JacksonTypeHandler.class三、设置xml当中的resultMap四、JacksonTypeHandler讲解五、新增假如是JSONObject 不管数据库当中是以json还是longtext数据类型来…

树莓派Opencv调用摄像头(Raspberry Pi 11)

前言:本人初玩树莓派opencv,使用的是树莓派Raspberry Pi OS 11,系统若不一致请慎用,本文主要记录在树莓派上通过Opencv打开摄像头的经验。 1、系统版本 进入树莓派,打开终端输入以下代码(查看系统的版本&…

“人工智能教父”从谷歌离职 称后悔发展AI,为世人敲响警钟?

在加入谷歌的第十年、深度学习迎来爆发式发展的当下,被誉为“人工智能教父”的Geoffrey Hinton已从谷歌离职,只是为了告诫人们AI已经变得很危险。 公开资料显示,Geoffrey Hinton在2013年加入谷歌,曾任副总裁,研究机器学…

Python每日一练:硬币的面值奇偶排序陶陶摘苹果(花样解法)

Python每日一练 文章目录 Python每日一练前言一、硬币的面值二、奇偶排序三、陶陶摘苹果总结 前言 很显然,Python的受众远远大于C,其实笔者本人对Python的理解也是远强于C的,C纯粹是为了假装笔者是个职业选手才随便玩玩的,借着十…

【是C++,不是C艹】 缺省参数 | 函数重载 | 内联函数

💞💞欢迎来到 Claffic 的博客 💞💞 👉 专栏:《是C,不是C艹》👈 前言: 上期,我带大家给C打了招呼,捎带着认识了命名空间和输入输出,那…

SPSS如何使用基础功能?

文章目录 0.引言1.菜单栏2.工具栏 0.引言 因科研等多场景需要进行绘图处理,笔者对SPSS进行了学习,本文通过《SPSS统计分析从入门到精通》及其配套素材结合网上相关资料进行学习笔记总结,本文对软件界面基础功能进行阐述。    1.菜单栏 &am…

如何向面试官正确地提问?

你好,我是朱显杰。今天我们来聊一聊面试时,如何向面试官正确提问。 我做过8年面试官,面试过500多人。在面试的过程中,我发现了一个普遍现象,就是大部分候选人都不知道如何向面试官正确提问。要么不问,白白…

RocketMq源码分析(六)--消息消费者启动流程

文章目录 一、消息消费者模式二、消费者启动流程1、 push模式1)类关系2)类构造器3)启动流程 2、pull模式1)类关系2)类构造器3)启动流程 一、消息消费者模式 消息消费分两种模式:推(p…

【Redis】Redis缓存双写一致性之更新策略

介绍 面试题 1、只要用到缓存,就可能会涉及到Redis缓存与数据库双存储双写,只要是双写,就一定会有数据一致性问题,怎么解决一致性问题? 2、双写一致性,先动缓存redis还是数据库mysql?为什么&a…

剪枝与重参第十课:RepVGG重参

目录 RepVGG重参前言1. RepVGG2. RepVGG网络搭建2.1 conv_bn2.2 RepVGG Block初始化2.3 forward2.4 branch的合并2.5 重参的实现2.6 整体网络结构搭建2.7 模型导出 3. 完整示例代码总结 RepVGG重参 前言 手写AI推出的全新模型剪枝与重参课程。记录下个人学习笔记,仅…

了解npm run指令

了解npm run指令 在package.json文件中的script字段,可以定义脚本命令,通过npm run指令运行该脚本。 比如简单定义一个输出打印的shell脚本。 {"script": {"hw": "echo hello world!"} }执行npm run hw可以看到终端上打…

Python---正则表达式与递归

1. 正则表达式: 是一种字符串验证的规则,通过特殊的字符串组合来确立规则 用规则去匹配字符串是否满足 如(^[\w-](\.[\w-])*[\w-](\.[\w-])$)可以表示为一个标准邮箱的格式 re模块的三个主要方法: re.match: re.match(匹配规…

电子电气架构——车辆E/E架构Software独立性

我是穿拖鞋的汉子,魔都中坚持长期主义的工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 人只有在举棋不定,无从把握的时候才感到疲惫。只有去行动就能获得解放,哪怕做的不好也比无所作为强! 本文主要介绍车辆E/E架构常识,主要涉及E/E架构车载…