自我学习HTTP/1.0

87 阅读2分钟

前言

小知识,大挑战!本文正在参与“程序员必备小知识”创作活动。

自我学习HTTP/1.0

HTTP/0.9

实现有三个特征

  • 只有一个请求行就可以完整表达客户端的需求,没有HTTP请求头请求体

  • 服务器没有返回头信息,因为服务器不需要告诉客户端太多信息,只需要返回数据。

  • 返回的文件内容是ASCII字符流,因为都是HTML格式的文件件,ASCII字节码最合适。

HTTP/1.0

支持多类型的文件下载是HTTP/1.0的核心诉求

HTTP/1.0是如何通过请求头和响应头来支持多种不同类型的数据呢?

  1. 浏览器需要知道服务器返回的数据是什么类型的,然后浏览器才会根据不同的数据类型做针对性的处理

  2. 由于单个文件的数据量变得越来越大,为了减轻传输性能,服务器会对数据进行压缩后再传输,所以浏览器需要知道服务器的压缩方法

  3. 浏览器还需要告诉服务器它想要什么语言版本的页面

  4. 由于增加了各种不同类型的文件,而每种文件的编码形式又可能不一样,所以浏览器需要知道文件的编码类型

    所以最终发出来的请求头内容:

    Accept: text/html
    Accept-Encoding: gzip, deflate, br
    Accept-Charset: ISO-8859-1,utf-8
    Accept-Language: zh-CN,zh
    

    (1). 表示期望服务器返回html类型的文件;

    (2). 表示期望服务器采用gzip、deflate、br中的一种压缩方式;

    (3). 表示期望返回的编码格式是UTF-8或者ISO-8859-1;

    (4). 表示期望页面返回的优先语言是中文。

新增特性

  1. 有时候请求服务器无法处理或者处理出错,需要告诉浏览器应该如何请求,所以引入了状态码;

  2. 为了减轻服务器压力,提供了Cache机制,用来缓存已经下载的数据;

  3. 服务器需要需要同级客户端的基础信息,比如Windows和MacOS的用户数量分别是多少,所以请求头加入了用户代理的字段。