• 图解HTTP学习笔记


    前言:

    一直觉得自己在HTTP基础方面都是处于知其然,不知其所以然的样子。最近利用空闲时间拜读了一下图解HTTP,写篇博客记录一下读书笔记。

    TCP三次握手:

    ① 发送端首先发送一个带SYN标志的数据包给对方

    ② 接收端收到后,回传一个带有SYN/ACK标志的数据包以示传达确认消息

    ③ 发送端再回传一个带ACK标志的数据包,代表“握手结束”

    注意:若在握手的过程中某个阶段莫名中断,TCP协议会再次以相同的顺序发送相同的数据包。

    关于Cookie:

     目前我们用的比较多的用户鉴权的方法有两种:cookie和Authorization。

     Authorization:用户登录成功后在Response Headers或者在URL里面返回Authorization,然后前端拿到Authorization后进行处理,在每次进行HTTP请求时将该Authorization带在Request Headers上。

     
     
    Cookie:用户登录成功后,Cookie会根据从服务器端发送的响应报文内的一个叫做Set-Cookie的首部字段信息,通知客户端保存Cookie。当下次客户端再往该服务器发送请求时,客户端会自动在请求报文中加入Cookie值后再发送出去。
     
    很明显这两种方式对于前端来说当然是第二种Cookie的方式更爽点,因为第二种方式前端不需要做任何事情
     
    HTTP首部:

     HTTP首部根据实际用途分为:通用首部字段、请求首部字段、响应首部字段、实体首部字段

    通用首部字段

    首部字段名 说明
    Cache-Control 控制缓存的行为
    Connection 逐跳首部、连接的管理
    Date 创建报文的日期时间
    Pragma 报文指令
    Trailer 报文末端的首部一览
    Transfer-Encoding 指定报文主体的传输编码方式
    Upgrade 升级为其他协议
    Via 代理服务器的相关信息
    Waring 错误通知

    请求首部字段

    首部字段名 说明
    Accept 用户代理可处理的媒体类型
    Accept-Charset 优先的字符集
    Accept-Encoding 优先的内容编码
    Accept-Language 优先的语言(自然语言)
    Authorization Web认证信息
    Expect 期待服务器的特定行为
    From 用户的电子邮箱地址
    Host 请求资源所在服务器
    If-Match 比较实体标记(ETag
    If-Modified-Since 比较资源的更新时间
    If-None-Match 比较实体标记(与 If-Match 相反)
    If-Range 资源未更新时发送实体 Byte 的范围请求
    If-Unmodified-Since 比较资源的更新时间(与If-Modified-Since相反)
    Max-Forwards 最大传输逐跳数
    Proxy-Authorization 代理服务器要求客户端的认证信息
    Range 实体的字节范围请求
    Referer 对请求中 URI 的原始获取方
    TE 传输编码的优先级
    User-Agent HTTP 客户端程序的信息

    响应首部字段

    首部字段名 说明
    Accept-Ranges 是否接受字节范围请求
    Age 推算资源创建经过时间
    ETag 资源的匹配信息
    Location 令客户端重定向至指定URI
    Proxy-Authenticate 代理服务器对客户端的认证信息
    Retry-After 对再次发起请求的时机要求
    Server HTTP服务器的安装信息
    Vary 代理服务器缓存的管理信息
    WWW-Authenticate 服务器对客户端的认证信息


    实体首部字段 

    首部字段名 说明
    Allow 资源可支持的HTTP方法
    Content-Encoding 实体主体适用的编码方式
    Content-Language 实体主体的自然语言
    Content-Length 实体主体的大小(单位: 字节)
    Content-Location 替代对应资源的URI
    Content-MD5 实体主体的报文摘要
    Content-Range 实体主体的位置范围
    Content-Type 实体主体的媒体类型
    Expires 实体主体过期的日期时间
    Last-Modified 资源的最后修改日期时间
     
    状态码:
     
    1XX
    信息性状态码
    接收的请求正在处理
    2XX
    成功状态码
    请求正常处理完毕
    3XX
    重定向状态码
    需要进行附加操作以完成请求
    4XX
    客户端错误状态码
    服务器无法处理请求
    5XX
    服务器错误状态码
    服务器处理请求出错

    常用的一些状态码:

    200 OK:表示从客户端发来的请求在服务器端被正常处理了

    204 No Content:该状态码代表服务器接收的请求已成功处理,但在返回的响应报文中不含实体的主体部分。一般用于在需要从客户端往服务器发送信息,而对客户端不需要发送新信息内容的情况下下。

    206 Partial Content:该状态码表客户端进行了范围请求,而服务器成功执行了这部分的GET请求。响应报文中包含由Content-Range指定范围的实体内容

    301 Moved Permanently:永久性重定向。该状态码表示请求的资源已被分配了新的URI,以后应使用资源现在所指的URI。

    302 Found:临时性重定向。该状态码表示请求的资源已被分配了新的URI,希望用户(本次)能使用新的URI访问。与301的区别是,代表资源不是被永久移动,只是临时性质的。

    303 See Other:该状态码表示由于请求对应的资源存在着另一个URI,应使用GET方法定向获取请求的资源。303和302有着相同的功能,但303状态码明确表示客户端应当采用GET方法获取资源。

    304 Not Modified:该状态码表示客户端发送附带条件的请求时,服务器端允许请求访问资源,但未满足条件的情况。304状态码返回时,不包含任何响应的主体部分。304虽然被划分在3XX类别中,但是和重定向没有关系。

    307 Temporary Redirect:临时重定向。该状态码和302有相同的含义,但是307不会将POST变成GET

    400 Bad Request:该状态码表示请求报文中存在语法错误。

    401 Unauthorized:该状态码表示发送的请求需要有通过HTTP认证(BASIC认证、DIGEST认证)的认证信息。另外若之前已进行过1次请求,则表示用户认证失败。

    403 Forbidden:该状态码表明对请求资源的访问被服务器拒绝了。

    404 Not Found:表明服务器上无法找到请求的资源。

    500 Internal Server Error:表明服务器端在执行请求时发生了错误。

    503 Service Unavailable:表明服务器暂时处于超负载或正在进行停机维护,现在无法处理请求。

    总结:

    第一次将本书读完后有一种这样的感觉,书中提到的很多知识点都是有所了解或者都能看懂,但是过了一段时间后发现很多地方又忘了,后面找机会再来拜读一下这本书。

  • 相关阅读:
    django migration
    Jenkins Jobs status dashboard by Build Monitor Plugin
    PyWebIO Write interactive web app in script way.
    Infrastructure as Code
    sqlalchemy
    reactsketch
    CI/CD System and gerrittrigger keypoints.
    mysql backup
    Alembic A database migrations tool for SQLAlchemy.
    docker support for inner loop
  • 原文地址:https://www.cnblogs.com/heavenYJJ/p/9201790.html
Copyright © 2020-2023  润新知