• 【后端】HTTP4


    回顾一下之前学习的内容

    通过之前的学习,我们大致了解了HTTP请求响应的报文格式

    HTTP请求

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

    (2)请求头 header

    (3)空行

    (4)正文body

    HTTP响应

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

    (2)响应头header

    (3)空行

    (4)正文

    我们在学习请求的格式中,我们学习了首行的方法和URL

    还讲述了请求header的部分标准键值对:

    1)Host

    2)Content-Length & Content-Type

    3)User-Agent

    4)Referer


    接下来,我们再继续往下学习,我们还要在学习一个请求header里面的标准键值对——Cookie

    Cookie不是小饼干~它同样是请求头中一个重要字段:这是浏览器在本地储存的一种机制(存在硬盘上)

    下图是访问的网页时,浏览器保存下来的Cookie

    每当我们打开一个网页,看屏幕左上角根域名在一起的那个小锁头,点击就会显示Cookie,画红圈的部分就是Cookie 

     Cookie是按照不同的域名维度来组织的

    不同的域名有不同的Cookie,一个网站发起的http请求可能来自多个域名,每一个Cookie都会对应一个键值对,Cookie和query string一样,都是由程序员自定义的~


    Cookie从哪里来,要到哪里去?

    Cookie这里的键值对是简单的字符串,也就是说,使用Cookie来作为保存数据的手段,只能存一些简单的键值对信息,简单的字符串,不能存什么图片视频音频啥的

    比如说,可以使用Cookie来存

    1.上次访问页面的时间

    2.当前访问页面的次数

    3.当前访问页面的身份信息(身份标识,id)

    那么Cookie从哪里来的呢?

    cookie存在服务器,但来源是浏览器,比如说上图的搜狗网页里面的cookie,都是我们去访问搜狗这个网页后,就会访问到搜狗的服务器,由服务器返回的这些cookie

    在服务器返回的响应报文中,可以在响应header中包含一个或者多个Set-Cookie这样的资源,浏览器看到Set-Cookie就会把这样的数据给保存在浏览器本地~

    Cookie要到哪里去?

    cookie来自服务器,储存在浏览器,最终还要返回到服务器。当浏览器保存了cookie之后,下次访问同一个网站,就会把之前本地储存的cookie再通过http请求header中的cookie再给带过去

    那么我们想想,为什么把cookie从服务器存到浏览器中,之后再访问服务器的时候,又要把cookie返回给服务器?

    因为服务器要服务的客户端有很多很多,这些不同的的客户端都是有着自己的相关数据,

    或者简单来说就是,cookie相当于你的通行证,你的这个通行证在我的服务器登记过,我这里就会记录你的相关信息了,之后服务器会给你提供更便捷的服务吧

    下面我们来看一个cookie经典应用场景(不是唯一场景

    最常用的场景就是在客户端维持登录的状态

    我们在某个网站登录成功后,浏览器就会获取到服务器的发送来的cookie,这些cookie里面有客户端的身份信息,然后接下来访问该服务器的其他页面时,服务器也知道是谁在登录

     当你第一次带着你的用户名和密码去请求登录的时候,服务器就会去校验你的用户名和密码,同时服务器这边会储存一个键值对,key就是刚才返回的身份标识,value就是用户的详细信息(服务器要给多个用户提供服务,每个用户就会对应一组不同的键值对)

    然后当你再次去访问该服务器的时候,浏览器会在请求中加入有关你信息的cookie发送给服务器,服务器就可以根据身份标识来在键值对中查找,找到对应的value,然后就会给你返回一个登录过的页面(比如说我们登录csdn,cookie可以维持登录状态,否则你每次一打开一个csdn页面就要重新登录一次了)


    HTTP响应

    咱们来看看状态码~

    状态码,是一个数字,这个数字描述了当前这次请求的“状态”(成功/失败以及失败的原因)

    HTTP的状态是有明确的规定的,我们重要得认识那些经常出现的状态码

    (1)200:表示访问成功

    (2)404 Not found :你的请求路径出错了

    你的请求中的url路径(表示要访问的服务器上的资源)写错了(想访问的资源,服务器没有),此时就会出现404

    这里有一个问题:服务器会在内存上创建一个虚拟的文件资源对吧,这是程序员自定义的,是在写代码的时候构造好的,你要是输入的url路径不匹配,那还是会报错~

    (3)403 Forbidden:访问被拒绝(客户端没有访问当前网页的权限)

    然后你会发现404和403这两个状态码都是针对客户端的,客户端这边要是有问题就可能会放回4xx状态码,都是4开头的~

    (4)500 Internal Server Error :表示服务器内部错误

    也就是服务器代码执行过程中,出现异常

    (5)504 Gateway Timeout :表示访问超时了

    一般在双11的时候,淘宝的服务器就经常会瘫痪对吧,就是服务器请求量很大的时候,对于服务器的负载就很重

    然后你会发现:500和504都是针对服务器的,如果服务器出现问题,会是5xx也就是5开头的状态码

    (6)302:临时重定向

    当我们有时候访问一个网站的时候,一点击,这个网站就会给我们跳转到另外一个网站,这就是重定向

    有一天我们的旧网站打算不用了然后搞一个新网站,但是旧网站还有很多老用户,那么我们就可以搞一个重定向,当老用户访问旧网站的时候,会给他们跳转到新的网站

    (7)301 Moved Permanently 永久重定向.

    当浏览器收到这种响应时, 后续的请求都会被自动改成新的地址. 301 也是通过 Location 字段来表示要重定向到的新地址. 

    状态码还有很多,这里就不一一列举了

    下面做一个总结

    上图就是不同状态码的基本性质


    响应的报头也和请求的报头差不多

     以上加上之前的内容就是介绍了HTTP报文格式的重要内容了~

  • 相关阅读:
    html5 -- canvas使用(1)
    怎样才能做到C++入门到精通,看看大佬们是怎么做的!
    跑步戴什么耳机比较好、精挑五款最佳跑步耳机推荐
    《论文写作》感悟
    One bite of Stream(9)
    「降本」有可能,「增效」不确定
    Playwright 使用指南-2
    文件上传预览下载
    面试官问:Flink内部数据在算子链内外如何交换?Flink为何能高效处理数据?你该怎么回答呢?
    1148 Werewolf - Simple Version
  • 原文地址:https://blog.csdn.net/qq_61862008/article/details/127902531