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

    于长沙

  • 相关阅读:
    Struts2 技术全总结 (正在更新)
    Servlet 技术全总结 (已完成,不定期增加内容)
    字节顺序&字节对齐
    Kubernetes 清除持续 Terminating 状态的Pods
    [K8s]无yaml文件重启Pod
    外部访问docker容器(docker run -p/-P 指令)
    Linux (OpenBSD)系统目录分析
    CPU Cache 机制以及 Cache miss
    ifconfig 中的 eth0 eth0:1 eth0.1 与 lo
    MYSQL 文件类型
  • 原文地址:https://www.cnblogs.com/imaikce/p/7679702.html
Copyright © 2011-2022 走看看