前言
小知识,大挑战!本文正在参与“程序员必备小知识”创作活动。
自我学习HTTP/1.0
HTTP/0.9
实现有三个特征
-
只有一个请求行就可以完整表达客户端的需求,没有HTTP请求头和请求体。
-
服务器没有返回头信息,因为服务器不需要告诉客户端太多信息,只需要返回数据。
-
返回的文件内容是ASCII字符流,因为都是HTML格式的文件件,ASCII字节码最合适。
HTTP/1.0
支持多类型的文件下载是HTTP/1.0的核心诉求
HTTP/1.0是如何通过请求头和响应头来支持多种不同类型的数据呢?
-
浏览器需要知道服务器返回的数据是什么类型的,然后浏览器才会根据不同的数据类型做针对性的处理
-
由于单个文件的数据量变得越来越大,为了减轻传输性能,服务器会对数据进行压缩后再传输,所以浏览器需要知道服务器的压缩方法
-
浏览器还需要告诉服务器它想要什么语言版本的页面
-
由于增加了各种不同类型的文件,而每种文件的编码形式又可能不一样,所以浏览器需要知道文件的编码类型。
所以最终发出来的请求头内容:
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). 表示期望页面返回的优先语言是中文。
新增特性
-
有时候请求服务器无法处理或者处理出错,需要告诉浏览器应该如何请求,所以引入了状态码;
-
为了减轻服务器压力,提供了Cache机制,用来缓存已经下载的数据;
-
服务器需要需要同级客户端的基础信息,比如Windows和MacOS的用户数量分别是多少,所以请求头加入了用户代理的字段。