【后端】初识HTTP_2

news2024/11/26 0:53:49

我们学习的HTTP协议,是应用层里面最广泛使用的协议~

我们主要是学习HTTP的请求响应的报文格式

我们可以借助抓包工具来学习,抓包抓到的是文本格式~~

根据上节内容

我们大概了解了请求和响应的格式

请求有4部分:

(1)首行 :方法   URL    版本号

(2)请求头header:  键值对,每一行是一个键值对,键和值使用:和空格来分割

(3)空行:结束标志

(4)正文body:承载一些具体的数据,可能是josn格式(键值对)也可以是其他格式

响应同样也有4部分组成

(1)首行:版本号   状态码    状态码描述

(2)响应头header:同样也是一行一个键值对,同样使用:和空格来分割

(3)空行:结束标志

(4)承载一些具体的数据,可以是json格式,html格式,还可以是css,js,图片等等格式


接下来我们来了解一下HTTP中的一些细节

本章我们主要介绍的是  请求中  的  首行  中的  URL  和   方法  这两个内容~

首先我们先来认识URL

URL:唯一资源定位符(用这个来找网络上的资源)

URI:唯一资源标识符(用这个来区分一个网络上的资源)

URL和URI的概念非常相似,我们一般不会做显示区分~


我们平时在浏览器中搜索的内容,都是一个URL

比如我们搜索一下,搜狗官网   csdm官网   不孕不育关键字

这些都是URL 

 为什么我们现在的URL基本都是https?http其实和https没有太大的区别,唯一的区别就是https对数据进行了加密,https也就比http多了这个加密功能罢了

上图第二部分登录信息,这种用法现在基本上是不用了

第三部分,服务器地址:也就是服务器的IP地址,当然,也可以写成域名,域名和IP地址是一个等价关系,DNS域名解析系统,能够帮助我们自动的把域名转换成IP地址

第四部分服务器端口号:标识了要访问目标服务器的哪个进程(第三和第四部分就能够确定,是互联网上的哪个主机的哪个进程)在浏览器的url里面端口号经常会省略不写,省略的时候用的是当前协议的默认端口,http的默认端口为 80,https的默认端口为 443

第五部分带层次的文件路径:服务器进程可能会提供很多的资源,这些资源会放在一个具体的目录中,在URL中写的路径,不一定是真的对应到服务器上的某个硬盘的目录,服务器提供的资源,可能是真实存在的文件,也可能是一个“虚拟出来的文件”(静态资源/动态资源)

第六部分:有一个问号?,这个问号后面的也是键值对结构,称为query string(查询字符串),相当于浏览器给服务器传递一些必要的参数;header里面也有很多键值对,但这些键值对大多数的根据标准来定义的,而URL中的查询字符串中的键值对是完全自定义的,所以,查询字符串就是前后端交互数据的重要桥梁~

第七部分片段标识符:用来区分一个网页中的哪部分,常见于 小说网站,或者文档网站,借助片段标识符快速跳转到网页的某个部分(所以你在浏览文档网页的时候,你往下滑动鼠标,你会发现URL是跟着变化的,那是因为网页中的不同片段都对应一个片段标识符)


在URL中的重要部分

1.IP地址+端口号【基础】

2.带层次的路径【开发中常用】

3.查询字符串【开发中常用】

带层次的路径:选择的时候,根据实际情况来,服务器的哪些资源是可以通过网络访问,哪些资源是不允许访问,是要根据选择的路径来的

查询字符串:要注意的是解码和编码,写代码的时候要经常考虑这个事情,虽然一般不用咱们自己实现解码编码,但要有这个意识

URL encode【编码】/  decode【解码】

我们知道,URL中已经包含了一些特殊含义的符号了,比如@ /  ? ……

万一query string 的value中,也包含了这些特殊符号,很可能会有问题!!(浏览器可能会错误的识别URL,服务器也可能会错误的解析URL)非常类似与,编程中的变量名不能是 “关键字”~

我们要用编码的方式来转义这些要用的符号,,本质上就是把特殊符号进行转义了,这里的转义范围不仅仅是这些特殊符号,还可以是汉字

(1)咱们现在浏览器中搜索一下 C++  这个关键词

 复制URL,我们看到在query string中的value里面,出现了C%2B%2B,这难道是为了骂C++的程序员都是一群2B吗?并不是,当我们打开ASCII编码查看 加号+ 的转移字符,而转义的规则,就是把转义的字符串,每个字符的十六进制表示,每个字节前边加上一个%

 +十六进制 =》ascii就是 2B

而转义汉字就是借用UTF-8

比如说我们搜索  不孕不育  这个词作为关键字

 

 不孕不育搜索的关键词就会在url中的query string 中以utf8编码的形式显示

一个汉字是3个字节,每个字节前边都会加一个%

 我们如果在代码的时候不进行编码的话,有的浏览器可以访问我们的网页,而有的浏览器假如没有自动编码,可能就访问不了,因此我们要有编码解码的意识~

把原始的字符,转成转义后的字符 => URL encode(编码)

把转义后的字符还原成原始的字符 => URL decode(解码)


 认识请求首行中的  “方法”(method)

这也是HTTP中非常重要的部分

可以把这个方法理解成,你的这个请求想要做啥

 谢灵运说过,天下文采十斗,曹子剑独占八斗,他自己一斗,剩下的其他文人共享一斗

在HTTP中的方法重要性也是如此,GET方法独占8斗(最常用)POST独占一斗(常用)剩下的方法共享一斗,所以我们这里只重点介绍 GET 和 POST


GET

GET是HTTP中最常用的请求方法,一般下面4种情况会触发GET

(1)浏览器地址栏直接输入 URL,此时就会出发GET

(2)html里面的link ,a, img, script 也会触发GET请求

(3)form表单

(4)ajax

GET请求的特点

1.URL的query string 可以为空,也可以不为空

2.有若干个header键值对

3.body部分为空

GET请求长度在标准里面是不限制的

标准中没有限制长度上限,但浏览器和HTTP服务器实现的时候,可能有长度上限,这取决于具体实现


POST

产生POST途径

1.form

2.ajax

POST请求的特点

1.方法叫做POST

2.URL里面通常没有query string

3.也有若干个header键值对

4.body这里通常是有的,body的格式有很多种

POST在传递信息给服务器的时候,通常会把信息放到body中

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

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

相关文章

leetcode 51. N皇后 回溯法求解(c++版本)

题目描述 简单来说就给一个N*N的棋盘 棋盘上的每一列每一行以及每一个对角不能出现两个皇后 因此明确以下几点 要找出所有可能的解法也是采用回溯法进行求解(具体在下面进行详解) 用下面一张示例图来说明回溯法的思路 说白了就是进行搜索,…

java项目-第102期基于ssm的校园二手交易平台-java毕业设计

java项目-第102期基于ssm的校园二手交易平台 【源码请到资源专栏下载】 1、项目简述 Hi,大家好,今天分享的源码是基于ssm的校园二手交易平台。 该交易平台分为两部分,前台和后台。用户在前台进行商品选购以及交易;管理员登录后台可…

python-(6-3-3)爬虫---requests入门(对参数封装)

文章目录一 需求二 分析三 代码四 补充说明一 需求 爬取豆瓣电影的“纪录片”的电影信息数据 二 分析 老规矩,先在网页的“检查”中提取我们需要的信息 如下图所示。在“纪录片”那一页面,选择"network"----“XHR”----“preview”。 我们…

【附源码】Python计算机毕业设计面向社区的购物平台系统

项目运行 环境配置: Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术: django python Vue 等等组成,B/S模式 pychram管理等等。 环境需要 1.运行环境:最好是python3.7.7,…

java计算机毕业设计ssm+vue网络考试信息网站

项目介绍 对网络考试系统进行了介绍,包括研究的现状,还有涉及的开发背景,然后还对系统的设计目标进行了论述,还有系统的需求,以及整个的设计方案,对系统的设计以及实现,也都论述的比较细致&…

五大模型看深度学习用于时序预测的最新进展

引言 在以往的时序预测中,大部分使用的是基于统计和机器学习的一些方法。然而,由于深度学习在时间序列的预测中表现并不是很好,且部分论文表述,在训练时间方面,用 Transformer、Informer 、Logtrace 等模型来做时间序…

ESP32 入门笔记06: FreeRTOS+《两只老虎》 (ESP32 for Arduino IDE)

ESP32FreeRTOS Esp32 模块中已经提供了 FreeRTOS(实时操作系统)固件。 FreeRTOS有助于提高系统性能和管理模块的资源。FreeRTOS允许用户处理多项任务,如测量传感器读数,发出网络请求,控制电机速度等,所有…

旅游推荐系统

摘要 随着社会的发展,人们生活水平的提高,旅游逐渐成为人们生活中的重要活动,2019年国内旅游人数超过60亿人次。并且,旅游业已经成为了我国经济发展的一个重要支柱,近年来我国旅游业对GDP贡献值呈上升趋势。2019年&am…

【附源码】计算机毕业设计java装修服务分析系统设计与实现

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…

【数据结构】链表OJ特别篇 —— 面试情景带你深度剖析 环形链表系列问题 复制带随机指针的链表

文章目录0. 前言1. 环形链表2. 环形链表延伸问题3. 环形链表 II4. 复制带随机指针的链表5. 结语0. 前言 Hello,大家好,我是anduin。这期的内容依然是链表OJ。但与前两期不同的是,这次我会模拟面试的情景,由浅入深,以生…

冶金行业数字化供应链管理系统:赋能企业端到端供应链优化,推动行业数字化变革

作为国之重器,冶金行业在国家大基建战略的支持下,迎来了新一轮的发展良机,然而冶金行业整体产能过剩、对于产业链下游依赖严重等情况依然突出,机遇与挑战并存,在此环境下,如何在激烈的竞争中提升企业自身竞…

多对一和一对多的处理P21,P22

多对一: 按照查询嵌套处理: StudentMapper:(接口很简单需要返回一个List) package com.Li.dao;import com.Li.pojo.Student; import org.apache.ibatis.annotations.Select;import java.util.List;public interface …

无人机和热成像

当它变得可见时,看不见的世界是一个令人惊叹的景象。 热成像就是这样,透过使用专门的摄影机和技术,使看不见的红外光谱可见。 我们周围那个无形的世界隐藏着什么,这是一个完整的隐藏世界。 图片来源:Keith Davis/热成像…

腾讯面试真题 | 没在我八股文列表里。。。

🎈 作者:Linux猿 🎈 简介:CSDN博客专家🏆,华为云享专家🏆,Linux、C/C、云计算、物联网、面试、刷题、算法尽管咨询我,关注我,有问题私聊! &…

零基础自学javase黑马课程第十天

零基础自学javase黑马课程第十天 ✨欢迎关注🖱点赞🎀收藏⭐留言✒ 🔮本文由京与旧铺原创,csdn首发! 😘系列专栏:java学习 💻首发时间:🎞2022年11月1日&#x…

【MySQL】深入理解MySQL索引优化器工作原理

本文导读 本文将解读MySQL数据库查询优化器(CBO)的工作原理。简单介绍了MySQL Server的组成,MySQL优化器选择索引额原理以及SQL成本分析,最后通过 select 查询总结整个查询过程。 一、MySQL 优化器是如何选择索引的 下面我们来…

2022年最新浙江建筑特种工(施工升降机)真题题库及答案

百分百题库提供特种工(施工升降机)考试试题、特种工(施工升降机)考试预测题、特种工(施工升降机)考试真题、特种工(施工升降机)证考试题库等,提供在线做题刷题,在线模拟考…

web前端期末大作业——基于html+css+javascript学生宿舍管理系统网站

🎉精彩专栏推荐 💭文末获取联系 ✍️ 作者简介: 一个热爱把逻辑思维转变为代码的技术博主 💂 作者主页: 【主页——🚀获取更多优质源码】 🎓 web前端期末大作业: 【📚毕设项目精品实战案例 (10…

双十一到了,当我用Python采集了电商平台所有商品后发现....

Python采集电商平台写在前面环境及模块案例实现思路代码展示效果展示最后写在前面 这不是双十一快到了,为了以最优惠的价格买到自己想买的商品,我不惜用Python把ya ma xun 所有商品撸了一遍。 环境及模块 使用环境 python 3.8 pycharm 2021 模块及安…

重磅发布 | 更快、更强的 .NET 7

.NET Conf 2022在11⽉8⽇11点正式开始了,为期三天的会议(11⽉8-10⽇),围绕 .NET 7 展开。相信各位⼩伙伴都已经开始安装 .NET 7 正式版本以及相关的开发⼯具。这次 .NET 7 围绕传统的 C#,ASP.NET Core, Blazor, .NET M…