1. 程式人生 > >《圖解HTTP》————第六章——HTTP首部

《圖解HTTP》————第六章——HTTP首部

一、HTTP報文首部

HTTP請求報文,報文首部

  • 請求行(方法、URI、HTTP版本)
  • 請求首部欄位
  • 通用首部欄位
  • 實體首部欄位
  • 其他

HTTP響應報文,報文首部

  • 狀態行(HTTP版本、狀態碼)
  • 響應首部欄位
  • 通用首部欄位
  • 實體首部欄位
  • 其他

二.HTTP首部欄位

使用首部欄位是為了給瀏覽器和伺服器提供報文主體大小、所使用的語言、認證資訊等內容

結構——————首部欄位名:欄位值

eg:Content-Type:text/html      (Content-Type表示報文主體的物件型別)

 

四種HTTP首部欄位型別:

 

HTTP首部欄位一覽

通用首部欄位

首部欄位名 說明
Cache-Control 控制快取的行為
Connection 逐跳首部、連結的管理
Date 建立報文的日期時間
Pragma 報文指令
Trailer

報文末端的首部一覽

Transfer-Encoding 指定報文主體的傳輸編碼方式
Upgrade 升級為其他協議
Via 代理伺服器的相關資訊
Warning 錯誤通知

請求首部欄位

首部欄位名 說明
Accept 使用者代理可處理的媒體資訊
Accept-Charset 優先的字符集
Accept-Encoding 優先的內容編碼
Accept-Language 優先的語言(自然語言)
Authorization Web認證資訊
Expect 期待伺服器的特定行為
Form 使用者的電子郵箱地址
Host 請求資源所在伺服器
If-Match 比較實體標記(ETag)
If-Modified-Since 比較資源的更新時間
If-None-Match 比較實體標記(與If-Match相反)
If-Range 資源未更新時傳送實體Byte的範圍請求
If-Unmodified-Since 比較資源的更新時間(與If-Modified-Since相反)
Max-Forwards 最大傳輸逐跳數
Proxy-Authorization 代理伺服器要求客戶端的認證資訊
Range 實體的位元組範圍請求
Referer 對請求中URI的原始獲取方
TE 傳輸編碼的優先順序
User-Agent HTTP客戶端程式的資訊

響應首部欄位

首部欄位名 說明
Accept-Ranges 是否接受位元組範圍請求
Age 推算資源建立經過時間
ETag 資源的匹配資訊
Location

令客戶端重新定向至指定URI

Proxy-Authenticate 代理伺服器對客戶端的認證資訊
Retry-After 對再次發起請求的時機要求
Server HTTP伺服器的安裝資訊
Vary 代理伺服器快取的管理資訊
WWW-Authenticate 伺服器對客戶端的認證資訊

實體首部欄位

首部欄位名 說明
Allow 資源可支援的HTTP方法
Content-Encoding 實體主體適用的編碼方式
Content-Language 實體主體的自然語言
Content-Length 實體主體的大小(單位:位元組)
Content-Location 代替對應資源的URI
Content-MD5 實體主體的報文摘要
Content-Range 實體主體的位置範圍
Content-Type 實體主體的位置型別
Expires 實體主體過期的日期時間
Last-Modified 資源的最後修改日期時間

 

HTTP首部欄位將定義成快取代理和非快取代理的行為,分成:

  • 端到端首部(End-to-end Header) 分到次類別中的首部會轉發給請求/響應對應的最終接受目標,且 必須儲存在由快取生成的響應中,必須被轉發

       除逐跳首部欄位外其他欄位

  • 逐跳首部(Hop-by-hop Header)  分在此類別的首部支隊單次轉發有效,會因快取或代理而不再轉發             

       包括Connection、Keep-Alive、Proxy-Authenticate、Proxy-Authorization、Trailer、TE、Transfer-Encoding、Upgrade

 

三、HTTP/1.1 通用首部欄位

1.Chache-Control:能夠控制快取的行為

  • Chache-Control:no-cache 客戶端不接受快取過的資訊,偽雷防止快取中返回國企的資源
  • Chache-Control:no-store 不進行快取,按時請求或響應中包含機密資訊
  • Chache-Control:max-age=604800(單位:秒) 一定時間內不必再確認快取是否過期
  • Chache-Control:min-fresh=60() 要求快取伺服器返回至少還未超過指定時間的快取資源,否則即使有效也不用
  • Chache-Control:max-stale=3600()可指示快取資源,過期照收
  • Chache-Control:only-if-chached   客戶端盡在快取伺服器本地快取目標的資源情況也才要求返回
  • Chache-Control:must-revalidate 代理向元伺服器再次驗證即將返回的響應快取目前是否仍然有效,會忽略max-stale指令
  • Chache-Control:proxy-revalidate 返回響應之前再次驗證快取的有效性
  • Chache-Control:no-transform 無論在請求還是響應中,快取都不能改變實體主體的媒體型別

2.Connection

作用:1.控制不再轉發給代理的首部欄位

             Connection:不再轉發的欄位名

           2.管理持久連線

              預設持久連線,伺服器想斷開時   Connection:close

             請求/響應持久連線   Connectionn:Keep-Alive

 

3.Date    表明建立HTTP報文的日期和時間

Date: Tue,03 Jul 2012 04:40:59 GMT

 

4.Pragram

Pragram:no-chache       屬於通用首部欄位,但只用於請求中。客戶端會要求所有的中間伺服器不返回快取的資源,與Chache-Control:no-cache 可一起使用

 

5.Trailer  事先說明在報文主體後記錄了哪些首部欄位

6.Transfer-Encoding 規定傳輸報文時報文主體用編碼方式

7.Upgrade  用於檢測HTTP協議及其他協議是否可使用更高階的版本進行通訊,其引數值可以指定一個完全不同的通訊協議,使用時,需額外指定  Connection:Upgrade

8.Via 追蹤客戶端與伺服器之間的請求和響應報文的傳輸路徑 可以避免請求迴環的發生,在經過代理時必須附加

   各個代理伺服器會往Via首部新增自身伺服器資訊

9.Warning 告知客戶一些於換成相關的問題的警告

 

四、請求首部欄位

1.Accept 通知伺服器使用者代理能夠處理的媒體型別以及相對優先順序

   Accept:text/html,application/xhtml+xml;q=0.9,*/*;q=0.8

q=   表示權重,分號隔開

  • 文字檔案:text/html,text/plain,text/css...                application/xhtml+xml,application/xml....
  • 圖片檔案:image/jpeg,image/jif,image/png...
  • 視訊檔案:video/mpeg,video/quicktime...
  • 應用程式使用的二進位制檔案:application/octet-stream,application/zip...

2.Accept-Charset 通知伺服器使用者代理支援的字符集以及優先順序

   Accept-Charset:iso-8859-5,unicode-1-1;q=0.8

3.Accept-Encoding:告知伺服器使用者代理支援的內容編碼以及優先順序(q=)

   內容編碼的例子

  • gzip 檔案壓縮程式生產的編碼格式
  • compress UNIX檔案壓縮程式生產的
  • deflate       zlib格式以及deflate壓縮演算法生產的編碼格式
  • identity  不執行壓縮或者不會變化的預設編碼格式     

4.Accept-Language:zh-cn,zh;q=0.7,en-us,en;q=0.3

5.Authorization 告知伺服器使用者代理的認證資訊

6.Expect 客戶端告知伺服器期望出現的某種特點行為

7.Form:[email protected]    告知伺服器使用使用者代理的電子郵件地址

8.Host  告知伺服器請求的資源所處的網際網路主機名和埠號,必須包含

   Host:www.hackr.jp

9.If-Match:"123456"   條件請求 與實體標記(ETag)值相同時,伺服器接收請求

10.If-Modified-Since  告知若欄位值早於更新時間,則希望處理該請求 用於確認代理或客戶端擁有的本地資源的有效性

11.If-None-Match   與ETag值不一致時,處理請求

12.If-Range   與ETag值或時間 一致 處理

13.If-Unmodified-Since 告知若欄位值在指定日期之後,則處理該請求

14.Max-Forwards 伺服器在往下一個伺服器轉發請求之前,將Max-Forwards值-1後重新賦值

15.Proxy-Authorization 告知伺服器認證所需要的資訊

16.Range:bytes=5001-10000  範圍請求

17.Referer:http://www.hackr.jp/index.htm   告知伺服器請求的原始資源的URI

18.TE 告知伺服器客戶端能夠處理響應的傳輸編碼方式以及相對優先順序

19.User-Agent 用於傳達瀏覽器的種類 將建立請求的瀏覽器和使用者名稱等資訊傳送給伺服器

 

五、響應首部欄位

1.Accept-Ranges告知客戶端伺服器是否能處理範圍請求,一指定獲取伺服器端某個部分的資源

  可處理 bytes   反之 none

2.Age:600  告知客戶端,源伺服器在多久之前建立了響應

3.ETag:“13216546”       告知客戶端實體標識 為每份資源分配ETag值

  強Etag值,細微變化改變

  弱ETag值,根本資源改變才變

4.Location   將響應接收方引導至與某個請求URI位置不同的資源

5.Proxy-Authenticate  把由代理伺服器所要求的認證資訊傳送給客戶端

6.Retry-After:120    告知客戶端應在多久之後再次傳送請求 欄位值可以說具體日期時間,也可以是建立相應後的秒數

7.Server 告知客戶端當前伺服器上安裝的HTTP伺服器應用程式的資訊

8.Vary:Accept-Language 可對快取進行控制。源伺服器會向代理伺服器傳達關於本地快取使用方法的命令

9.WWW-Authenticate 用於HTTP訪問認證

 

六、實體首部欄位

1.Allow:GET,HEAD 通知客戶端能夠支援指定資源的所以HTTP方法

2.Content-Encoding :gzip  告知客戶端伺服器對實體的主體部分選用的內容編碼方式

3.Content-Language:zh-CN 告知客戶端,實體主體使用的自然語言

4.Content-Length:15000  表明了實體主體部分大小(位元組)

5.Content-Location:HTTP://。。。。。。。    給出與報文主體部分相對應的URI

6.Content-MD5  客戶端會對接受的報文主體執行相同的MD5演算法,然後與首部欄位的Content-MD5的欄位值進行比較

7.Content-Range:bytes 5001-10000/10000 告知客戶端最為響應返回的實體的哪個部分符合範圍請求

8.Content-Type 說明了實體主體內物件的媒體型別

9.Expires 將資源失效日期告知客戶端

10.Last-Modified  指明資源最終修改時間

 

七、為Cookie服務的首部欄位

Cookie工作機制時使用者識別以及狀態管理

與Cookie有關的首部欄位:

  • Set-Cookie 開始狀態管理所使用的Cookie資訊 屬於響應首部欄位

      屬性

   

屬性

說明

NAME=VALUE 賦予Cookie的名稱和其值(必須項)
expires=DATE Cookie的有效期(預設 瀏覽器關閉前為止)
path=PATH 將伺服器上的檔案目錄作為Cookie的適用物件
domain=域名 作為Cookie適用物件的域名
Secure 僅在HTTPS安全通訊時才會傳送Cookie
HttpOnly 加以限制,使Cookie不能被JavaScript指令碼訪問
  • Cookie

      Cookie:status=enable  告知伺服器當客戶端想獲得HTTP狀態管理支援時,就會在請求中包括從伺服器接收到的Cookie

 

八、其他首部欄位

常用:

  • X-Frame-Options   控制網站內容在其他Web網站的Frame標籤內顯示,防止點選劫持攻擊

                                      DENY  拒絕                SAMEORIGIN 僅同源域名下的頁面許可

  • X-XSS-Protection  響應首部 針對跨站指令碼攻擊(XSS)的對策

                                     0:將XSS過濾設定成無效狀態

                                     1:....有效狀態

  • DNT    請求首部  拒絕被精準廣告追蹤

                   0:同意被追蹤

                   1:拒絕被追蹤

  • P3P   響應首部  利用P3P(線上隱私偏好平臺)讓Web網站上的個人隱私變成僅供程式理解的形式