http协议笔记| 豆包MarsCode AI刷题

28 阅读4分钟

http协议:

全称超文本传输协议,是用于从万维网(WWW:World Wide Web )服务器传输超文本到本地浏览器的传送协议。

当我们在浏览器输入一个网址,此时浏览器就会给对应的服务器发送一个 HTTP 请求,对应的服务器收到这个请求之后,经过计算处理,就会返回一个 HTTP 响应。并且当我们访问一个网站时,可能涉及不止一次的 HTTP 请求和响应的交互过程。

客户端:  主动发起网络请求的一端

服务器:  被动接收网络请求的一端

请求:  客户端给服务器发送的数据

响应:  服务器给客户端返回的数据

Fiddler ****抓包工具介绍:

为此为了更加清楚的了解我们访问一个网站时 HTTP 请求/协议是怎么交互的,由于 HTTP 是一个文本格式的协议,就可以通过以下两种方式:

通过 F12 打开浏览器的开发者工具,点击 Network 标签页,然后刷新页面就行。显示的每一条记录都是一次 HTTP 请求/响应

 抓包工具,这里以 Fiddler 为例,它能够直接读取你电脑上网卡的信息,网卡上有什么数据流动,它都能感知到并且显示出来

打开 Fiddler,然后打开你要访问的网站,访问该网站的 HTTP 请求和响应就会显示在 Fiddler 上

URL 的标准格式如下:

协议类型:[//服务器地址[:端口号]][/资源层级 UNIX 文件路径]文件名[?查询字符串][#片段标识符]

GET 是最常用的 HTTP 方法,常用于获取服务器上的某个资源。

POST 方法也是一种常见的方法,多用于提交用户输入的数据给服务器

GET 和 POST 其实没有本质区别,使用 GET 的场景完全可以使用 POST 代替,使用 POST 的场景一样可以使用 GET 代替。但是在具体的使用上,还是存在一些细节的区别

一个 HTTP 方法是幂等的,指的是同样的请求被执行一次与连续执行多次的效果是一样的,服务器的状态也是一样的。

即没有对 URL 的长度有任何限制

PUT: 与 POST 相似,但是具有幂等特性,一般用于更新

DELETE: 删除服务器指定资源

OPTIONS: 返回服务器所支持的请求方法

HEAD: 与 GET 类似,只不过响应体不返回,只返回响应头

TRACE: 能显示服务器端收到的请求,测试的时候会用到

CONNECT: 预留,暂无使用

HTTP Header是附加在请求和响应消息中的键值对,用于传递额外的信息

header 的整体格式是键值对结构,每个键值对占一行,键和值之间使用 冒号``+``空格 进行分割。

User-Agent 表示浏览器或者操作系统的属性

HOST 的值表示服务器主机的地址和端口

Content-Length

Content-Length 表示 body 的数据长度,长度单位是字节

Content-Type

Content-Type 表示 body 的数据格式

Referer

Referer 表示这个页面是从哪个页面跳转过来的

Cookie 是浏览器提供的一种让程序员在本地存储数据的能力

如果没有 Cookie,直接将要存储的数据保存在客户端浏览器所在的主机的硬盘上,那么就会出现很大的安全风险,比如当你不小心打开某个不安全的网站,该网站就可以在你的硬盘上写一个病毒程序,那么你的电脑就挂了!因此浏览器为了保证安全性,就禁止网页中的代码访问主机的硬盘(无法在 JS 中读写文件),因此也就失去了持久化存储的能力,故 Cookie 就很重要!

Cookie 中存储了一个字符串,是键值对结构的,键值对之间使用 ;分割,键和值之间使用 = 分割

Cookie 这个数据可能是客户端(网页)自行通过 JS 写入的,也可能来自于服务器在 HTTP 响应的 header 中通过 Set-Cookie 字段给浏览器返回数据。

Cookie 字段会在后续的请求中,把浏览器本地存储的这些键值对再发送回服务器