zoukankan      html  css  js  c++  java
  • 读《图解HTTP》有感-(HTTP首部)

    写在前面

    该章节是对请求报文及响应报文的首部信息进行解析。通过该章节的学习,相信大家对首部结构,及各个首部字段的作用有个基本的了解


    •  正文

    HTTP报文由HTTP报文首部、空行以及HTTP报文主体组成。

    HTTP报文主体主要装载用户和资源的信息。

    HTTP报文首部为客户端以及服务端提供所需要的处理信息。

    1、HTTP报文首部

    HTTP首部包括HTTP请求报文首部和HTTP响应报文首部。 

    HTTP请求报文首部主要由方法(如:POST、GET)、URI、HTTP版本、HTTP首部字段等组成

    HTTP响应报文首部主要由HTTP版本、状态码(编码和原因短语)、HTTP首部字段等组成

    (请求报文首部组成图示)

    (响应报文首部组成图示)

    2、HTTP首部字段

    2.1、首部字段为浏览器和服务器提供提供报文主体大小、语言和认证信息等

    2.2、HTTP首部字段由首部字段名和字段值构成(形如:key:value)

    如:Content-Type: text/html; 表示报文主体类型为text/html类型

    Keep-Alive:timeout=15, max=100;字段值有个值的表示方式

    2.3、4种HTTP首部字段类型(根据用途划分)

    a、通用首部字段(请求报文和响应报文都包括该类型)

    b、请求首部字段(补充了请求的附加内容、客户端信息、响应内容优先级等信息)

    c、响应首部字段(补充了响应的附加内容)

    d、实体首部字段(报文实体使用的首部;补充了资源内容,更新时间等相关的实体信息)

    3、HTTP/1.1通用首部字段

     3.1、Cache-Control(操作缓存工作机制)

    该首部字段名支持多个字段值(如:Cache-Control:private,max-age=0,no-cache)

    HTTP/1.1版本中在用的Cache-Control字段值列表:

    (请求首部字段值列表)

    (响应首部字段值列表)

     3.2、Connection

    3.2.1、控制不再转发给代理的首部字段

    (这里通过设置Connection:Upgrade,则首部字段中的Upgrade将不再转发给代理服务器)

    3.2.2、管理持久连接

     HTTP/1.1默认是持久连接的,也就是说如果通信双方没有明确要断开连接,那么将会利用这一次的连接来进行多个请求和响应通信

    (如:Connection:Keep-Alive)

    3.3、Date

    Date首部字段表示创建HTTP报文的日期和时间

    3.4、Via

    Via首部字段是为了追踪报文在通信链路的传输路径;报文通过网关和代理,网关和代理会把服务器的信息添加到Via首部字段值中,再进行转发,这样就可以得知报文经过了链路中的哪些机器去路由

    4、请求报文首部字段

    4.1、Accept【通知服务器,客户端需要获取的媒体(如:文本,视频音频等)类型以及媒体类型的优先级】

    Accept的扩展类型有:Accept-Charset、Accept-Encoding、Accept-Language

    4.2、Authorization(当服务器需要认证消息时,通过添加Authorization首部字段来告诉服务器,用户代理的认证信息)

    4.3、From(告诉服务器使用用户代理的用户的电子邮件地址)

    4.4、Host【当一台服务器上部署多个域名的虚拟机时,通过该字段告诉服务器,请求是哪台虚拟主机(如:Host:www.cnblogs.com)】

    4.5、if-*

    if-*格式的首部字段是带条件请求,也就是说只用服务器匹配了该首部字段的字段值后,服务器才会处理请求

    4.6、Max-Forwards(限制报文在通信链路上经过代理服务器的长度)

    5、响应报文首部字段

    5.1、Accept-Ranges(告知客户端,服务端是否可以处理范围请求。其值可以是:none(表示不支持),bytes)

    5.2、Age(告知客户端,服务端在多久之前处理过该请求。其单位为秒)

    5.3、Etag(告知客户端,报文实体在服务端的标识)

    5.3、Location(告知客户端请求的资源已被重定向到其他URI地址)

    5.4、Proxy-Authenticate(告诉客户端,代理服务需要的认证信息)

    5.5、Retry-After(告诉客户端多久之后才能再次请求服务端)

    5.6、Server(告诉客户端,服务端安装的HTTP服务器信息)

    5.7、WWW-Authenticate(告诉客户端,服务端使用的HTTP认证方案)

    6、实体报文首部字段

    6.1、Allow(告诉客户端,服务端所支持的HTTP请求方法类型)

    6.2、Content-Encodeing(告诉客户端,服务端对于请求的实体的主体的内容所采用的编码格式)

    6.3、Content-Language(告诉客户端,实体主体使用的自然语言[如:中国中文:zh-CN])

    6.4、Content-Length(告诉客户端,实体主体的大小【单位为字节】)

    6.5、Content-Location(告诉客户端,实体主体的对应的URI地址)

    6.6、Content-Type(告诉客户端,实体主体对象采用的媒体类型)

    7、为cookie服务的首部字段

    因为cookie未被编入HTTP/1.1 RFC2616,但是Cookie对于管理用户的状态是十分重要的

    (set-Cookie支持的属性及属性值)

    9、补充说明

    9.1、HTTP/1.1首部字段列表(供参考)

    (请求首部字段)

    (响应首部字段)

     

    (实体首部字段)


    •   交流学习

    笔者能力有限。如有纰漏,望斧正


     2017-10-17

    于长沙

  • 相关阅读:
    [SSRS] Use Enum values in filter expressions Dynamics 365 Finance and Operation
    Power shell deploy all SSRS report d365 FO
    display method in Dynamics 365 FO
    How To Debug Dynamics 365 Finance and Operation
    Computed columns and virtual fields in data entities Dynamics 365
    Azure DevOps for Power Platform Build Pipeline
    Create readonly entities that expose financial dimensions Dynamics 365
    Dataentity call stack dynamics 365
    Dynamics 365 FO extension
    Use singletenant servertoserver authentication PowerApps
  • 原文地址:https://www.cnblogs.com/imaikce/p/7679702.html
Copyright © 2011-2022 走看看