http协议(1)

前言

一个网站等于前端+后端,今天介绍HTTP协议的一些基础知识,使大家对HTTP有所了解!

什么是HTTP协议

HTTP协议是一个使用非常广泛的应用层协议!(还有TCP和IP协议)
复习一下这5层!

应用层 关注数据怎么使用
传输层 关注的是整个传输的起点和终点
网络层 地址管理+路由选择
数据链路层 相邻节点之间的数据转发
物理层 基础设置,硬件

应用层协议经常需要"自定义协议"
HTTP之所以使用广泛,主要原因是HTTP可制定性非常强!

什么时候会用到HTTP协议呢?
只要在上网就在使用!
1/打开一个浏览器
2.手机app从网络上加载一份数据
3.微信小程序

HTTP是一个"一问一答"这样形式的协议,一个请求->一个响应

HTTP 协议格式

学习HTTP协议,最主要的就是认识HTTP报文格式,而想要认识报文格式要借助一些外部的抓包工具把HTTP协议给显示出来

抓包工具本质上相当于一个代理,借助这样的代理,就可以看到网络上传输的具体数据!

这里我们使用fiddler,专注于HTTP,使用简单
大家下载可以百度一下!

fiddler使用

在这里插入图片描述
左侧是抓到包的列表

1.看颜色
黑色的包响应是普通数据
蓝色的包响应的是HTML
2,再看域名
3.再看响应数据的长度

双击要关注的包,右侧就会显示详情
右上是请求,右下是响应!!!

在这里插入图片描述
在这里插入图片描述
这是一个完整的HTTP请求(文本数据,不是二进制)
所谓的HTTP请求,其实就是通过代码,构造出一个符合HTTP格式要求的字符串,往TCP的socket中写!!!

一个HTTP请求数据,包含了4各部分

在这里插入图片描述
再看看响应

在这里插入图片描述
响应可能是压缩过的,本身是HTTP文本,压缩成二进制了
在这里插入图片描述
点这个条,解压缩
在这里插入图片描述
在这里插入图片描述
借助上述抓包工具,就看到了HTTP协议请求和响应的详细内容了,然后进一步去研究这个格式的细节信息

在这里插入图片描述

HTTP请求

首行

HTTP方法

在这里插入图片描述
HTTP方法描述了这个HTTP请求想干啥
HTTP协议有很多种方法,表示不同的语义

在这里插入图片描述

常用的

GET的语义 是从服务器这里拿个什么东西
一般请求大部分都是GET
POST的语义 是往服务器里提交个东西
一般在登录的时候或上传文件的时候

POST请求body一般不为空
GET请求body一般为空

GET和POST这两个方法有什么区别?

本质没有区别!!!
使用GET的场景,替换成POST一般也可以,使用POST的场景替换成GET一般也行
但是在习惯上存在区别
1.GET习惯上表示"获取一个数据",POST用来表示"提交一个数据"
2.GET一般没有body,需要携带数据放到URL中,POST一般有body
3,GET请求一般会设计成幂等的 POST则无要求
4.GET可缓存的(前提是幂等的)POST则不能
5.GET的请求可以被浏览器收藏,POST不能

URL

唯一资源定位符,描述了网络上唯一的一个资源,不是HTTP协议的概念,很多协议都会有URL!!!

在这里插入图片描述

版本号

最常见的是 HTTP/1.1

请求头header

键值对的结构,每个键值对占一行,键和值之间使用冒号空格分割,这里的键值对可以用N行
会用空格作为结束标记

Host: www.sogou.com

这个属性,描述了浏览器这个请求要访问的服务器是谁,这里写的不仅仅是地址,也可以写端口号
在URL中,已经写了当前要访问的服务器是谁,为什么还有再写一边呢?

大多数情况下,Host中的值和URL中的域名是一致的,但当我们访问的服务器不是直接访问,而是通过"代理"来访问的,此时Host(最终目标)和URL(当前目标)可能就不一致了

Content-Type

Content-Type 描述了body的数据格式
Content-Lengh 描述了boby的长度

这两个属性,跟着body走的,如果是一个没有body的get请求,自然header中没有这俩属性

Content-Type的一些写法

1.application/x-www-form-urlencoded
form表单提交数据,会生成这种格式的body
2.username=tz&password=123&uuid=xxxxx%status=0
3.application/json/;charset=UTF-8
其中application/json是数据的格式,描述了咋们的数据按照json格式来组织的
charset=UTF-8是数据的字符集
在进行前后端交互,json是最常见的一种数据格式

作为响应,Content-Type还有几种写法

text/html
text/css
application/javascript
application/json
image/jpg
image/png

User-Agent(UA)

表示用户使用的客户端是啥样子的
在这里插入图片描述
主要描述了浏览器是什么版本,系统是什么版本
UA现在的一个重要的用途就是为了区分是手机/PC/平板

Referer

描述了当前这个页面从哪个页面跳转来的
如果直接在地址栏输入url,此时请求中没有referer(如果点按收藏夹,效果一样)

在这里插入图片描述
比如我们在搜狗上点广告的页面,此时广告主服务器的这次访问,就会带有sogou的Referer

广告主可能会在多个平台上投广告,因此就可以通过Referer 来区分看当前这次访问是哪个平台导入的流量

Cookie(小甜饼干)

在这里插入图片描述

Cookie的值.也是键值对,键值对之间使用;分割.键和值之间使用=分割

Cookie的本质是浏览器在本地存储,用户自定义数据的一种关键机制!!!

!.Cookie从哪里来?

从服务器来的,当我们的浏览器访问服务器的是时候,服务器就会在HTTP响应中,通过Set-Cookie字段,把Cookie的键值对,返回给浏览器浏览器收到这个数就会存到本地

2.Cookie到哪里去?

会在下次请求的时候,把Cookie带个服务器
Cookie在浏览器这边,只能算是"暂存",真正要让这个数据发挥作用,还是要用服务器来使用!

3.Cookie有什么用?

是浏览器本地存储数据的机制
存的数据不一定非要是角色,任何想存的数据都可以(前提是字符串),由于Cookie的存储空间有限,一般也不会用Cookie存太大的

今天的文章就到这里了!!!加油!!!

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值