看完让你有一种恍然大悟醍醐灌顶的感觉 http服务器是什么?( 六 )

这个请求头信息比较少,首先 Host 表示的是对象所在的主机 。 你也许认为这个 Host 是不需要的,因为 URL 不是已经指明了请求对象的路径了吗?这个首部行提供的信息是 Web 代理高速缓存所需要的 。 Connection: close 表示的是浏览器需要告诉服务器使用的是非持久连接 。 它要求服务器在发送完响应的对象后就关闭连接 。 User-agent: 这是请求头用来告诉 Web 服务器,浏览器使用的类型是 Mozilla/5.0,即 Firefox 浏览器 。 Accept-language 告诉 Web 服务器,浏览器想要得到对象的法语版本,前提是服务器需要支持法语类型,否则将会发送服务器的默认版本 。 下面我们针对主要的实体字段进行介绍(具体的可以参考 https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Headers MDN 官网学习)
HTTP 的请求标头分为四种: 通用标头、请求标头、响应标头 和 实体标头,依次来进行详解 。
通用标头通用标头主要有三个,分别是 Date、Cache-Control 和 Connection
Date
Date 是一个通用标头,它可以出现在请求标头和响应标头中,它的基本表示如下
Date: Wed, 21 Oct 2015 07:28:00 GMT 表示的是格林威治标准时间,这个时间要比北京时间慢八个小时
Cache-Control
Cache-Control 是一个通用标头,他可以出现在请求标头和响应标头中,Cache-Control 的种类比较多,虽然说这是一个通用标头,但是又一些特性是请求标头具有的,有一些是响应标头才有的 。 主要大类有 可缓存性、阈值性、 重新验证并重新加载 和其他特性
可缓存性是唯一响应标头才具有的特性,我们会在响应标头中详述 。
阈值性,这个我翻译可能不准确,它的原英文是 Expiration,我是根据它的值来翻译的,你看到这些值可能会觉得我翻译的有点道理

  • max-age: 资源被认为仍然有效的最长时间,与 Expires 不同,这个请求是相对于 request标头的时间,而 Expires 是相对于响应标头 。 (请求标头)
  • s-maxage: 重写了 max-age 和 Expires 请求头,仅仅适用于共享缓存,被私有缓存所忽略(这块不理解,看完响应头的 Cache-Control 再进行理解)(请求标头)
  • max-stale:表示客户端将接受的最大响应时间,以秒为单位 。 (响应标头)
  • min-fresh: 表示客户端希望响应在指定的最小时间内有效 。 (响应标头)
Connection
Connection 决定当前事务(一次三次握手和四次挥手)完成后,是否会关闭网络连接 。 Connection 有两种,一种是持久性连接,即一次事务完成后不关闭网络连接
Connection: keep-alive另一种是非持久性连接,即一次事务完成后关闭网络连接
Connection: closeHTTP1.1 其他通用标头如下
实体标头实体标头是描述消息正文内容的 HTTP 标头 。 实体标头用于 HTTP 请求和响应中 。 头部Content-Length、 Content-Language、 Content-Encoding 是实体头 。
  • Content-Length 实体报头指示实体主体的大小,以字节为单位,发送到接收方 。
  • Content-Language 实体报头描述了客户端或者服务端能够接受的语言,例如
Content-Language: de-DEContent-Language: en-USContent-Language: de-DE, en-CA
  • Content-Encoding 这又是一个比较麻烦的属性,这个实体报头用来压缩媒体类型 。 Content-Encoding 指示对实体应用了何种编码 。 常见的内容编码有这几种: gzip、compress、deflate、identity ,这个属性可以应用在请求报文和响应报文中
Accept-Encoding: gzip, deflate //请求头Content-Encoding: gzip //响应头下面是一些实体标头字段

看完让你有一种恍然大悟醍醐灌顶的感觉 http服务器是什么?

文章插图
请求标头上面给出的例子请求报文的属性比较少,下面给出一个 MDN 官网的例子
GET /home.html HTTP/1.1Host: developer.mozilla.orgUser-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.9; rv:50.0) Gecko/20100101 Firefox/50.0Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8Accept-Language: en-US,en;q=0.5Accept-Encoding: gzip, deflate, brReferer: https://developer.mozilla.org/testpage.htmlConnection: keep-alivUpgrade-Insecure-Requests: 1If-Modified-Since: Mon, 18 Jul 2016 02:36:04 GMTIf-None-Match: "c561c68d0ba92bbeb8b0fff2a9199f722e3a621a"Cache-Control: max-age=0 Host
Host 请求头指明了服务器的域名(对于虚拟主机来说),以及(可选的)服务器监听的TCP端口号 。 如果没有给定端口号,会自动使用被请求服务的默认端口(比如请求一个 HTTP 的 URL 会自动使用80作为端口) 。
Host: developer.mozilla.org

推荐阅读