• 认识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
    在这里插入图片描述
    可以看到header部分都是由键值对构成的,每个键值对占一行.键和值之间使用冒号空格来分割,这里的键值对可以有n行,使用空行作为结束标记,这里的键值对大部分都是由http协议规定的,当然也可以添加自定义的键值对
    Host那一行描述了浏览器当前要访问的服务器是谁
    在这里插入图片描述
    可以看到首行的URL已经写过一遍,为啥在header还要再写一遍呢?
    大多数情况下,Host的值和URL里面的域名是一致的
    但是如果我们访问某个服务器是通过某个代理来访问的话,Host和URL可能就不一致了
    2.Content-Type,Content-Length
    这个属性只有body有,如果是一个没有body的get请求,自然header里面没有这两个属性
    所以我们找一个post请求来看看
    在这里插入图片描述
    Content-type: application/x-www-form-urlencoded
    Content-Type:application/json;charset=UTF-8
    这两种都是Content-Type的写法

    application/json 代表数据格式,数据是按照json格式来组织的
    charset=UTF-8代表数据的字符集

    什么是json数据格式
    在这里插入图片描述
    这张图写了一段伪代码,用{}表示,里面包含若干个键值对,键值对之间使用,分割,键和值之间使用: 分割
    作为请求,Content-Type就只有上述两种写法
    作为响应,Content-Type还有几种写法
    举个例:如图
    在这里插入图片描述
    text/html
    text/css
    application/javascript
    application/json
    image/jpg
    image/png
    还有别的写法,就不一一列举了,可以使用抓包工具fidder看

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

    3.User-Agent
    简称UA,就是描述用户的客户端是啥样子的
    在这里插入图片描述
    这一个UA描述了客户端的操作系统版本是win10,浏览器版本是Chrome/113.0.0.0,后面那一坨都是在说浏览器版本
    UA就是描述了浏览器和系统的版本

    4.Referer
    描述了当前这个页面是从哪个页面跳转过来的
    如果直接在地址栏输入URL,此时请求没有referer,我先搜索百度页面,然后再百度页面搜索,抓包就可以看到
    在这里插入图片描述
    在这里插入图片描述

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

    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进行了保存

    在这里插入图片描述

    再来画图认识的更加清楚

    在这里插入图片描述
    下一次我再次访问的时候,客户端就把cookie带着返回给了服务器
    在这里插入图片描述
    那么客户端访问的时候服务器就根据客户端带有的cookie和自己所有的cookie比对,对号入座,提供对应服务!

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

    在这里插入图片描述

  • 相关阅读:
    前端面试(1)——准备
    力扣上《将数字变成0的操作次数》这道题num & 0x01和num >>= 1的讲解
    文件(夹)批量重命名数字、字母、日期、中文数字大写小写
    蓝桥杯备考随手记: 常用的三种排序算法(冒泡排序、插入排序、选择排序)
    Linux实时查看Java接口数据
    笔试强训Day8
    系统性能指标
    flutter瀑布式图文列表
    MATLAB programming interface for STK software stkInit()
    Centos MySQL 源码安装(5.6)
  • 原文地址:https://blog.csdn.net/weixin_61436104/article/details/130900762