看完讓你有一種恍然大悟醍醐灌頂的感覺 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

推薦閱讀