认识HTTP协议---2

简介: 认识HTTP协议---2

hi,大家好,今天继续为大家带来HTTP协议相关的知识

认识请求报头

👀1.header

👀2.Content-Type,Content-Length

👀3.User-Agent

👀4.Referer

👀5.Cookie机制

小复习

进入正题之前我们先回忆一下之前的知识
http报文格式
请求:
首行(方法,URL,版本号)

请求头(header)
空行
正文(body)
响应:
首行(版本号,状态码,状态码描述)

响应头(header)
空行
正文(body),这里的body通常是一个html,css,jc,图片等形式的
URL 协议名://ip:端口号/带层次的路径?查询字符串
对于版本号,最常见的是HTTP/1.1


下面来进行今天的讨论

1.认识请求报头

上一篇文章我们只是粗略的认识了http请求报文格式,这次我们来详细认识一下


1.请求头header

08e9974428674e08a809b2ec69e4301f.png

可以看到header部分都是由键值对构成的,每个键值对占一行.键和值之间使用冒号空格来分割,这里的键值对可以有n行,使用空行作为结束标记,这里的键值对大部分都是由http协议规定的,当然也可以添加自定义的键值对

Host那一行描述了浏览器当前要访问的服务器是谁


可以看到首行的URL已经写过一遍,为啥在header还要再写一遍呢?


自定义的键值对

Host那一行描述了浏览器当前要访问的服务器是谁

可以看到首行的URL已经写过一遍,为啥在header还要再写一遍呢?

大多数情况下,Host的值和URL里面的域名是一致的

但是如果我们访问某个服务器是通过某个代理来访问的话,Host和URL可能就不一致了


2.Content-Type,Content-Length

这个属性只有body有,如果是一个没有body的get请求,自然header里面没有这两个属性

所以我们找一个post请求来看看

8fa3e6f51a1f428b899b1011c99fcbb2.png


Content-type: application/x-www-form-urlencoded

Content-Type:application/json;charset=UTF-8

这两种都是Content-Type的写法


application/json 代表数据格式,数据是按照json格式来组织的

charset=UTF-8代表数据的字符集


什么是json数据格式

acfcfdaa87ad42b88d024dd40b876d22.png

这张图写了一段伪代码,用{}表示,里面包含若干个键值对,键值对之间使用,分割,键和值之间使用: 分割

作为请求,Content-Type就只有上述两种写法

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

举个例:如图

f7bf0c6f95e843a29efbe410bdcafba1.png

text/html

text/css

application/javascript

application/json

image/jpg

image/png

还有别的写法,就不一一列举了,可以使用抓包工具fidder看


正是有了这些格式的描述,浏览器/http服务器才能正确的识别body并正确解析


3.User-Agent


简称UA,就是描述用户的客户端是啥样子的

e719f6265a10472b914bd461e11b1c9f.png

这一个UA描述了客户端的操作系统版本是win10,浏览器版本是Chrome/113.0.0.0,后面那一坨都是在说浏览器版本

UA就是描述了浏览器和系统的版本


4.Referer


描述了当前这个页面是从哪个页面跳转过来的


如果直接在地址栏输入URL,此时请求没有referer,我先搜索百度页面,然后再百度页面搜索,抓包就可以看到

d3656d58edab41de98a17d5b60727577.png

34a1d645bbf849e19b440b4be1f474ca.png

说明我是从百度搜索的页面跳转过来的

5.cookie机制

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

往往可以通过这个字段实现 “身份标识” 的功能.

每个不同的域名下都可以有不同的 Cookie, 不同网站之间的 Cookie 并不冲突


cookie的内容也是键值对,键值对之间使用分号分割,键和值之间使用=分割


可以看到http请求有很多键值对了,我们来总结一下


1.URL的query string

2.header的每一行都是键值对

3.body部分,如果Content-Type为Content-type: application/x-www-form-urlencoded或者Content-Type:application/json;charset=UTF-8,那么body部分也是键值对

4.Cookie里面.也是键值对


Cookie的理解

在浏览器和服务器交互的过程中,浏览器也要存储一些数据,比如在登录一个页面的时候,保存用户的相关信息

那么如何存呢?

存在硬盘吗?


🐷🐷🐷当然不可以,当我们不小心点了一个奇怪的网站,网站可能会入侵你的硬盘,资料全都没了,为了保证安全,浏览器会作出限制,禁止网页直接访问硬盘,那么虽然浏览器不能访问硬盘,但是提供了Cookie机制,允许网页在浏览器放一些自定义存储的键值对,这些数据通过浏览器提供的特定得api,写入到特定的文件中


Cookie机制本质上还是把特定数据写到特定文件,那么还是存储到硬盘上,只是Cookie机制进行了保护!!!


访问不同的浏览器,存的数据不同,Cookie也不同,每个网站都有自己的Cookie,如果是同一个网站,Cookie就是相同的


下面我们就讨论三个关于Cookie最重要的问题

🍡1.Cookie从哪里来

解答:Cookie从服务器来的,当我们浏览器访问服务器的时候,服务器在http响应里面通过Set-Cookie字段,把Cookie的键值对,返回给浏览器,浏览器收到,就会在本地存储

🍡2.Cookie到哪里去

解答:会在客户端发下一次请求的时候,把Cookie带回给服务器,它在浏览器只能是暂时存储,要让数据有用,还是要在服务器上使用

🍡3.Cookie的作用

是浏览器本地存储数据的机制

存任何都行,格式必须得是字符串类型的,也不能存太大的,空间有限


也就是说浏览器(客户端)发出一个请求,服务器给浏览器返回Cookie,然后浏览器带着这个Cookie再次访问该网站,这个服务器就根据客户端带的Cookie信息识别客户端并提供对应服务


界面告诉了用户访问过的页面,cookie进行了保存

564a2bf4f8164797990c6da5d8217969.png

再来画图认识的更加清楚

下一次我再次访问的时候,客户端就把cookie带着返回给了服务器

那么客户端访问的时候服务器就根据客户端带有的cookie和自己所有的cookie比对,对号入座,提供对应服务!


🍬🍬🍬今天的讲解就到这里,我们下期再见~~~


相关文章
|
7天前
|
监控 安全 搜索推荐
设置 HTTPS 协议以确保数据传输的安全性
设置 HTTPS 协议以确保数据传输的安全性
|
1月前
HAProxy的高级配置选项-配置haproxy支持https协议及服务器动态上下线
文章介绍了如何配置HAProxy以支持HTTPS协议和实现服务器的动态上下线。
80 8
HAProxy的高级配置选项-配置haproxy支持https协议及服务器动态上下线
|
5天前
|
安全 网络协议 网络安全
在实现HTTPS时,有哪些常见的安全协议
在实现HTTPS时,有哪些常见的安全协议
|
5天前
|
前端开发 JavaScript 安全
深入解析 http 协议
HTTP(超文本传输协议)不仅用于传输文本,还支持图片、音频和视频等多种类型的数据。当前广泛使用的版本为 HTTP/1.1。HTTPS 可视为 HTTP 的安全增强版,主要区别在于添加了加密层。HTTP 请求和响应均遵循固定格式,包括请求行/状态行、请求/响应头、空行及消息主体。URL(统一资源定位符)用于标识网络上的资源,其格式包含协议、域名、路径等信息。此外,HTTP 报头提供了附加信息,帮助客户端和服务端更好地处理请求与响应。状态码则用于指示请求结果,如 200 表示成功,404 表示未找到,500 表示服务器内部错误等。
13 0
深入解析 http 协议
|
12天前
|
数据采集 JSON API
🎓Python网络请求新手指南:requests库带你轻松玩转HTTP协议
本文介绍Python网络编程中不可或缺的HTTP协议基础,并以requests库为例,详细讲解如何执行GET与POST请求、处理响应及自定义请求头等操作。通过简洁易懂的代码示例,帮助初学者快速掌握网络爬虫与API开发所需的关键技能。无论是安装配置还是会话管理,requests库均提供了强大而直观的接口,助力读者轻松应对各类网络编程任务。
53 3
|
13天前
|
机器学习/深度学习 JSON API
HTTP协议实战演练场:Python requests库助你成为网络数据抓取大师
在数据驱动的时代,网络数据抓取对于数据分析、机器学习等至关重要。HTTP协议作为互联网通信的基石,其重要性不言而喻。Python的`requests`库凭借简洁的API和强大的功能,成为网络数据抓取的利器。本文将通过实战演练展示如何使用`requests`库进行数据抓取,包括发送GET/POST请求、处理JSON响应及添加自定义请求头等。首先,请确保已安装`requests`库,可通过`pip install requests`进行安装。接下来,我们将逐一介绍如何利用`requests`库探索网络世界,助你成为数据抓取大师。在实践过程中,务必遵守相关法律法规和网站使用条款,做到技术与道德并重。
28 2
|
15天前
|
数据采集 存储 JSON
从零到一构建网络爬虫帝国:HTTP协议+Python requests库深度解析
在网络数据的海洋中,网络爬虫遵循HTTP协议,穿梭于互联网各处,收集宝贵信息。本文将从零开始,使用Python的requests库,深入解析HTTP协议,助你构建自己的网络爬虫帝国。首先介绍HTTP协议基础,包括请求与响应结构;然后详细介绍requests库的安装与使用,演示如何发送GET和POST请求并处理响应;最后概述爬虫构建流程及挑战,帮助你逐步掌握核心技术,畅游数据海洋。
47 3
|
20天前
|
数据采集 网络协议 API
HTTP协议大揭秘!Python requests库实战,让网络请求变得简单高效
【9月更文挑战第13天】在数字化时代,互联网成为信息传输的核心平台,HTTP协议作为基石,定义了客户端与服务器间的数据传输规则。直接处理HTTP请求复杂繁琐,但Python的`requests`库提供了一个简洁强大的接口,简化了这一过程。HTTP协议采用请求与响应模式,无状态且结构化设计,使其能灵活处理各种数据交换。
47 8
|
20天前
|
缓存 网络协议 UED
HTTP协议介绍
HTTP协议的
27 5
|
20天前
|
监控 安全 应用服务中间件
如何配置HTTPS协议?
如何配置HTTPS协议?
32 4
下一篇
无影云桌面