HTTP介绍报文格式构造

news2025/7/14 10:40:39

HTTP

一. 简单介绍一下:

二. 学习报文格式:

三. HTTP中的细节介绍

四, 如何构造一个HTTP请求

一.  简单介绍一下:

  • 是应用层的典型协议
  • 客户端发送一个HTTP请求, 服务器返回一个HTTP响应(一问(请求)一答(响应)的)
  • HTTP是文本格式的协议

二. 学习报文格式:

1)先简单看一看HTTP的请求报文格式

1.首行

GET

https://cn.bing.com/

HTTP/1.1

方法

URL描述网络上的唯一资源

版本号

2.请求头header

Host: cn.bing.com

User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:107.0) Gecko/20100101 Firefox/107.0

……

  • 这是按行组织的键值对~~
  • 每一行,是一个键值对~~这里的键都是有固定含义的
  • 键和值之间的使用 : 空格分割

3.空行

一个HTTP请求的header可以有若干个,就可用空行,作为header的结束标志

4.正文body

有很多格式json……(body部分 有的请求有, 有的没有)

2)再简单看一看HTTP的响应报文格式

1.首行

HTTP/1.1

200

OK

版本号

状态码

状态码的描述

2.响应报头header

和请求的一样---键值对结构

3.空行

和请求的一样---作为header的结束标记

4.正文

有很多格式json/html/css/js/图片……

3)简单汇总

请求

1.首行                           方法 URL  版本号

2.请求头header            键值对,分割方式

3.空行                           结束标志

4.正文body                   格式

响应

1.首行                           版本号 状态码 状态码描述

2.响应头header            键值对,分割方式

3.空行                           结束标志

4.正文body                   格式

三. HTTP中的细节介绍

1.方法  2.URL  3.请求头header  4.状态码

1.方法

GET, POST, PUT, HEAD, DELETE, OPTIONS, TRACE, CONNECT, LINK, UNLINK

GET最常用, POST次之, 其他都不常用

GET

产生GET的途径

1.从浏览器地址栏直接输入URL

2.html里面的一些标签会触发,比如: link,a,script…

3.form表单

4.ajax

body部分通常为空

so->如果需要给服务器传递一些参数, 这些参数通常就是通过query string 传递的

POST

产生POST的途径

1.from

2.ajax

query string 部分通常为空

so->如果需要给服务器传递一些参数, 这些参数通常就是放到 body 中传递

GET 与POST 的区别

GET和POST没有本质的区别

GET语义-从服务器获取数据 , POST语义-往服务器上提交数据

习惯用法, 给服务器传递数据  GET通常放在url的query string  POST通常放在url的body

GET请求 建议实现''幂等''(给定一个输入, 输出结果是确定的, 输入输出一一对应)

在GET''幂等''前提下,GET请求的结果是可以缓存

2.URL

唯一资源定位符->用这个来找到网络上的资源

‘’RFC标准文档’’ 中有URL更详细的介绍

http:// user:pass @ www.example.jp : 80 / dir/index.html ? uid=1 # ch1

http://

user:pass

www.example.jp

80

dir/index.html

uid=1

ch1

协议方案名

登录信息

服务器地址

服务器端口号

带层次的文件路径

查询字符串

片段标识符

协议方案名

URL是很多协议都可以使用的

http:// 代表是http的 比如还有https…

登录信息

认证一下信息,现在基本不使用

服务器地址

  • 服务器IP, 也可以写为域名
  • 网络上的设备都是通过IP地址, 作为身份的标识 但是IP地址不好记, - > 用以串单词(域名), 来表示这个IP地址
  • DNS系统可以域名自动转换成IP地址

服务器端口号

  • 标识了要访问目标服务器的哪个进程
  • http, 默认端口号80
  • https, 默认端口号443

带层次的文件路径

  • 服务器可能提供很多资源(html文件,css文件…) -> 放到具体的目录中
  • 服务器提供的资源分两种: 真实存在的文件(静态资源), 虚拟出来的文件(动态资源)

查询字符串(query string)

  • 键值对形式: 键值对之间& 键和值= 分割
  • 浏览器给服务器传递一些必要的参数
  • 这个是程序猿自己定义的

片段标识符

  • 区分网页中的哪个部分
  • 借助它可以快速跳转到网页的某个部分
  • 比如: 小明小芳爱情故事第34章节

随机掉落的芝士🧀—URL encode

  • URL中已经包含一些特殊含义的符号了, 比如 : / @
  • 如果query string 的value中也有这些特殊符号怎么办?
  • Maybe会识别错误
  • So-> URL encode(编码) -> 把特殊符号进行转义, 范围不只是特殊符号,还有汉字~~
  • URL decode(解码) -> 把转义后的字符还原成原始的字符
  • 举个栗子 我搜1+1=3 是 query=1%2B1%3D3

3.请求头header

这里的键值对,都是标准规定的,有特殊含义,但是也可以自定义~

Host

表示服务器主机的地址和端口, 去哪里找到服务器

端口可以省略, 即表示默认值

Content-Length

Content-Type

有就一起有,无也一起无(好兄弟~)

  • Content-Length 表示body中的数据长度
  • ~HTTP协议中,传输层是TCP(HTTP 3.0版本前), -> TCP是面向字节流的(第九个性质TCP那里) -> 粘包问题 -> 这里解决问题就是约定报文长度
  • ~上述举一个栗子

GEThttps://sp3.baidu.com/-0U_dTmfKgQFm2e88IuM_aGET https://…

GET请求后面直接就是下一个GET请求, 所以,搞一个Content-Length, 直接告诉他取到那里是body长度

  • Content-Type 表示请求的body中的数据格式 -> 数据格式很多种 -> 不同格式,接收方,解析方式不一样
  • ~说几种:

1.from表单构造的请求() application/x-www-form-urlencoded

2.上传文件出现的格式

3.json格式(很香~) {"username":"11111"}

User-Agent(简称UA)

下面详细介绍

Referer

  • 表示这个页面是从哪个页面跳转过来的(上级页面是什么)
  • 可能没有referer ,例如: 在浏览器地址栏里直接输入一个地址,直接点收藏夹
  • 用处: CPC广告~~(不详细介绍)

Cookie

下面详细介绍

随机掉落的芝士🧀—Host:

随机掉落的芝士🧀—Host 与 URL 里的服务器主机IP与端口

  • URL 里的主机IP与端口 与Host 里的不一定完全一样~~
  • 先解释一个次 代理 (类似中间商, 比如买车,卖车,然后中间人(平台), 它可以隐藏买车的人的真实信息, 或者可以隐藏卖车的人的真实信息),
  • URL 的地址可能是, 代理的地址
  • Host 的地址 是, 真实想访问的地址

User-Agent(简称UA)

直接看一个

User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/107.0.0.0 Safari/537.36

Mozilla/5.0

Windows NT 10.0

Win64; x64

AppleWebKit/537.36

Chrome/107.0.0.0

Safari/537.36

MDN~~查询文档

系统是win10系统

64位系统

一个浏览器的内核

浏览器

Mac电脑上,默认浏览器

  • 小结: UA主要包含信息- > 操作系统信息和浏览器信息 -> 描述了用户使用什么设备上网 -> 因为最早的浏览器,有的支持图片,有的支持js… -> 从UA收集信息,知道可以支持什么页面 -> 显示什么页面 -> 现在UA没什么用了,但是可以统计用户设备情况~

Cookie

  • 由浏览器专门提供的特殊api -> 让网页(持久化)存储(保存硬盘上)一些简单的数据

   

 

  • Cookie和query string一样都是程序猿自定义的~ -> cookie只能存一些简单的键值对信息  -> 比如 上次访问页面的时间,当前页面的访问次数…
  • 那你是不是以为cookie就是来自于浏览器? 其实不是~~ 看一张图

 

  • cookie 典型的应用场景

客户端维持登录状态~某个网址登录成功后,浏览器就会记住当前的登录用户的信息~~下一次可以直接登录~

 

用我的理解就是~学生卡吧~回到宿舍楼的时候,需要信息登记嘛~~但是你带着自己的卡一刷,你的信息就直接出来了~~不需要到阿姨那里,手动填写一系列东西~~

所以cookie就像是一个媒介的感觉

4.状态码

是一个数字, 描述了当前这次请求的 ‘’状态’’ (成功,失败,失败原因)

比较好理解~~直接看表吧

200  访问成功

301  永久重定向

302  重定向 访问旧的URL自动跳转到新的URL上

403  forbidden 访问被拒绝,没权限

404  not found 请求路径写错了

500  internal server error 服务器内部错误

504  gateway timeout访问超时,服务器请求量大

1XX

信息性状态码

接收的请求正在处理

2XX

成功状态码

请求正常处理完毕

3XX

重定向状态码

需要进行附加操作以完成请求

4XX

客户端错误状态码

服务器无法处理请求

5XX

服务器错误状态码

服务器处理请求出错

四, 如何构造一个HTTP请求

1.浏览器自己构造~~

比如: 地址栏里写url -> 构造get请求  点击a标签->构造get请求 …

2.form

方法只能get pos

get键值对 query string

post键值对 body

Content-Type 都是 x-www-form-urlencoded

标签 请求构造数据

键值对 input

name 键

输入 值

关键作用

给服务器传键值对

 

3.ajax

全称~ Asynchronous Javascript And XML

Asynchronous异步 发起请求的主体,不负责接受结果,有别人主动推送

XML最初ajax主要借助http传输xml, 但是xml用的越来越少了, 现在ajax传其他数据ex:json

form与 ajax 区别

1. ajax方法都可以 不局限于get post

2. form构造的http请求 必触发 页面跳转  -> 开销大,耗时长,,用户等

  ajax默认发起请求不会跳转, 可手动改

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

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

相关文章

有监督学习神经网络的回归拟合——基于红外光谱的汽油辛烷值预测(Matlab代码实现)

👨‍🎓个人主页:研学社的博客 💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜…

2022年11月26日NaiveBayes

参考 ​ 朴素贝叶斯算法的核心思想是通过考虑特征概率来预测分类,即对于给出的待分类样本,求解在此样本出现的条件下各个类别出现的概率,哪个最大,就认为此待分类样本属于哪个类别。 ​ 我的理解是已知结果然后计算所有导致结果原…

[BJDCTF2020]EzPHP

前言 这个题目考的php知识真的比较多,也比较经典。由于我php基础不是很好,总会遇到一些问题。花时间弄懂这道题后也能更加巩固所学的知识。所以这道题还是有必要记录下来的。 题目 打开题目,在前端代码注释有这么一行编码。 受固化思想的影…

[CVPR2022] Cross-Model Pseudo-Labeling for Semi-Supervised Action Recognition

Cross-Model Pseudo-Labeling for Semi-Supervised Action Recognition 要点: 1、半监督动作识别,使用伪标记分配未标记数据,然后在训练中用作附加的监督 2、最近研究:伪标签通过在标记数据上训练模型获取,然后使用来…

重装系统电脑黑屏开不了机如何处理

​电脑使用时间久了难免就出现各种故障,比如卡顿、黑屏甚至崩溃直接开不了机。那么电脑黑屏开不了机怎么办呢?其实还是有解决的办法的,接下来看看小编是如何解决的吧! 工具/原料: 系统版本:windows 10系统 品牌型号&#xff1…

求余数联系和赋值运算

算术和赋值运算符 算术运算符&#xff1a; (加)、 -(减)、 *(乘)、 /(除)、 %(求余) 赋值运算符&#xff1a;、 、 -、 *、 /、 % 加法运算代码及效果 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title&…

Wlan三层组网+三层漫游

目录 wlan漫游配置(三层漫游)拓扑图和配置如下 思路: wlan配置不指定漫游组服务器的ac间漫游,实现笔记本之间在wlan覆盖范围内移动时业务不中断 要求:请大家参考教材196页完成AC间三层漫游配置&#xff0c;提交拓扑截图&#xff0c;ap上线截图&#xff0c;sta获取IP截图&#…

cpu设计和实现(协处理器hi和lo)

【 声明&#xff1a;版权所有&#xff0c;欢迎转载&#xff0c;请勿用于商业用途。 联系信箱&#xff1a;feixiaoxing 163.com】 很多同学可能不了解mips处理器&#xff0c;如果个人想补充一点mips cpu的知识&#xff0c;可以找些书籍资料来读一下&#xff0c;比如《See Mips R…

Springboot中集成mongodb,mysql(密码从密码服务中获取并且动态更新)

一.密码服务&#xff1a;公司统一进行数据库密码管理&#xff0c;为了防止密码泄露&#xff0c;会不定时更换密码&#xff0c;服务端就需要获取密码&#xff0c;类似key,value账号类型&#xff0c;首先根据数据库名去密码服务注册一个账号&#xff0c;后面通过这个注册的这个账…

【python】-详解进程与线程

文章目录进程1、多任务2、进程介绍3、多进程1 进程的创建步骤2 通过进程类创建进程对象3 进程的创建与启动代码4、进程执行带有参数的任务1 进程执行带有参数的任务2 args 参数的使用3 kwargs 参数的使用4 代码实现5 获取进程编号1 os.getpid()的使用2 os.getppid()的使用3 代码…

PLC中ST编程的定时器

定义通电延时功能块TON的变量&#xff0c;掉电延时功能块TOF的变量&#xff1b; 通过实例名来使用定时器&#xff1b; IN: 和 PT: 是输入引脚&#xff0c;Q> 和 ET> 是输出引脚&#xff1b; 定时器的通过IN输入引脚来触发的&#xff1b;定时器尽量不要在IF内调用&#…

ceph集群的搭建

ceph集群部署&#xff08;准备阶段&#xff09; 1. 配置静态网络&#xff08;自选&#xff09; 配置静态IP 2. 配置主机名&#xff08;必做&#xff09; ceph01&#xff1a; hostnamectl set-hostname ceph01ceph02&#xff1a; hostnamectl set-hostname ceph02ceph03&a…

[C++]打开新世界的大门之C++入门

&#x1f941;作者&#xff1a;华丞臧 &#x1f4d5;​​​​专栏&#xff1a;【C】 各位读者老爷如果觉得博主写的不错&#xff0c;请诸位多多支持(点赞收藏关注)。如果有错误的地方&#xff0c;欢迎在评论区指出。 推荐一款刷题网站 &#x1f449;LeetCode 目录 一、C关键字…

iOS适配Unity-2019

iOS适配Unity-2019 背景 由于2019起&#xff0c;Unity的Xcode工程&#xff0c;更改了项目结构。 Unity 2018的结构&#xff1a; 可以看Targets只有一个Unity-iPhone&#xff0c;Unity-iPhone直接依赖管理三方库。 Unity2019以后&#xff1a; Targets多了一个UnityFramework…

什么是地理信息系统(GIS)?

什么是地理信息系统&#xff08;GIS&#xff09;&#xff1f; 什么是地理信息系统&#xff08;GIS&#xff09;&#xff1f;GIS是一个收集、显示、管理和分析地理信息的系统。让我们进一步探讨地理信息系统的所有方面。 地理信息系统&#xff08;GIS&#xff09;将地理与数据连…

读《大话数据结构》溢彩加强版

源代码&#xff1a; C:\迅雷下载\2021072816023491335\59e95a4689eeb92f380f4ab2\202107\29976aaa-ef7a-11eb-aba5-00163e0a088c PPT: C:\迅雷下载\2021072816023491335\59e95a4689eeb92f380f4ab2\202009\942a5ce8-fe34-11ea-a6a1-00163e0396a1 参考文献&#xff1a; C:\迅雷下…

SpringBoot整合JSR-303表单校验

JSR-303表单校验 思考一个问题&#xff0c;引出JSR-303 为什么前端做了参数校验&#xff0c;后端还要进行参数校验&#xff1f; 普通用户通过页面操作&#xff0c;前端可以校验住参数的正确性。但如果有人获取到接口&#xff0c;利用接口调用工具比如&#xff1a;postman对后…

Python 基础测试题(含答案)

一、 选择题&#xff1a;每小题 2 分&#xff0c;共 40 分。 1、 下列标识符命名中&#xff0c; 符合规范的是&#xff08; &#xff09;。 A、 1_a B、 for C、 年龄 D、 a#b 2、 下列标识符中&#xff0c;不是 Python 支持的数据类型的是 &#xff08; &#xff09;。 A、…

深度学习之Python,OpenCV中的卷积

这篇博客将介绍图像内核和卷积。如果将图像视为一个大矩阵&#xff0c;那么图像内核只是一个位于图像顶部的微小矩阵。从左到右和从上到下滑动内核&#xff0c;计算输入图像和内核之间的元素乘法总和——称这个值为内核输出。内核输出存储在与输入图像相同 &#xff08;x&#…

数据结构(高阶)—— 红黑树

目录 一、红黑树的概念 二、红黑树的性质 三、红黑树的结点定义 四、红黑树的插入 五、红黑树的验证 六、红黑树与AVL树的比较 一、红黑树的概念 红黑树&#xff0c;是一种二叉搜索树&#xff0c;但在每个结点上增加了一个存储位表示结点的颜色&#xff0c;可以使Red或Bl…