zoukankan      html  css  js  c++  java
  • 图解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:表明服务器暂时处于超负载或正在进行停机维护,现在无法处理请求。

    总结:

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

  • 相关阅读:
    PAT B1045 快速排序 (25 分)
    PAT B1042 字符统计 (20 分)
    PAT B1040 有几个PAT (25 分)
    PAT B1035 插入与归并 (25 分)
    PAT B1034 有理数四则运算 (20 分)
    PAT B1033 旧键盘打字 (20 分)
    HDU 1231 最大连续子序列
    HDU 1166 敌兵布阵
    HDU 1715 大菲波数
    HDU 1016 Prime Ring Problem
  • 原文地址:https://www.cnblogs.com/heavenYJJ/p/9201790.html
Copyright © 2011-2022 走看看