fiddler請求報文的headers屬性詳解
headers的屬性包含以下幾部分。
(1)Cache頭域
在Cache頭域中,通常會出現以下屬性。
1. Cache-Control
用來指定Response-Request遵循的緩存機制。各個指令如下含義。
- Cache-Control:Public:可以被任何緩存所緩存。
- Cache-Control:Private:指示響應信息的全部或部分用於單個用戶,而不能用一個共享緩存來緩存。這可以讓源服務器指示,響應的特定部分只用於一個用戶,而對其他用戶的請求則是一個不可靠的響應。
- Cache-Control:no-cache:所有的內容都不會被緩存,請求頭里的no-cache表示瀏覽器不想讀緩存,並不是說沒有緩存。一般在瀏覽器按Ctrl+F5鍵強制刷新時,請求頭里也會有這個no-cache,也就是跳過強緩存和協商緩存階段,直接請求服務器。
- Cache-Control:max-age=0:指示客戶端願意接收其絕對時間不大於指定的時間,以秒計。如果直接按F5鍵的話,請求頭是max-age=0,只跳過強緩存,但進行協商緩存。
2. If-Modified-Since
- 把瀏覽器端緩存頁面的最后修改時間發送到服務器去,服務器會把這個時間與服務器上實際文件的最后修改時間進行對比。如果時間一致,那么會返回304,客戶端就直接使用本地緩存文件。如果時間不一致,就會返回200和新的文件內容。客戶端接到之后,會丟棄舊文件,把新文件緩存起來,並顯示在瀏覽器中。
本地文件的修改時間和服務器上的文件時間修改時間一致,說明文件沒有被更新。HTTP服務器返回304,告訴客戶端使用本地緩存文件
3. If-None-Match
- If-None-Match和ETag一起工作,工作原理是在HTTPresponse中添加ETag信息。當用戶再次請求該資源時,將在HTTP request中假如 If-None-Match信息(ETag的值)。如果服務器驗證資源的ETag沒有改變(該資源沒有更新),將返回200狀態和新的資源和ETag。使用這樣的機制將提高網站的性能
** If-None-Match和ETag的值一致,說明文件沒有被更新。服務器將返回304,告訴客戶端使用本地緩存文件**
4. Pragma
- 防止頁面被緩存,在HTTP/1.1版本中,它和Cache-Control:no-cache的作用一模一樣。
Prama只有一個用法,例如,Pragma:no-cache。
(2)Client頭域
1. Accept
瀏覽器端可以接收的媒體類型。
-
Accept: text/html
代表瀏覽器可以接收服務器發回的類型為text/html也就是我們常說的HTML文檔,如果服務器無法返回text/html類型的數據,服務器應該返回一個406錯誤(non acceptable)。 -
Accept: */ *
通配符 * 代表任意類型。代表瀏覽器可以處理所有類型 -
Accept-Encoding
瀏覽器聲明自己接收的語言。語言跟字符集的區別是:中文是語言,中文有多種字符集,如何big5、gb2312、gbk等
2. User-Agent
- 告訴HTTP服務器客戶端使用的操作系統和瀏覽器的名稱和版本。我們上網登陸論壇的時候,往往會看到一些歡迎信息,其中列出了你的操作系統的名字和版本、你所使用的瀏覽器的名稱和版本,這往往讓很多人感到很神奇,實際上,服務器應用程序就是從User-Agent這個請求報頭域中獲取到的這些信息。User-Agent請求報頭域允許客戶端將它的操作系統、瀏覽器和其他屬性告訴服務器。
3. Accept-Charset
- 瀏覽器聲明自己接收的字符集,如gb2312、utg-8等。
(3) Cookie頭域
- Cookie
最重要的header,將Cookie的值發送給HTTP服務器。
(4) Miscellaneous頭域
- Referer
- 提供了request的上下文信息的服務器,告訴服務器我是從哪個鏈接過來的。有些統計數據需要用到此頭域。比如從我的主頁上鏈接到統計服務器那里,該服務器就能夠從HTTP Referer中統計出每天有多少用戶點擊我主頁上的鏈接訪問他的網站。
(5) Entity頭域
1. Content-Length
- 發送給HTTP服務器數據的長度。
2. Content-Type
- 表示具體請求中的媒體類型信息。
常見的媒體格式類型如下。 - text/html: HTML格式
- text/plain: 純文本格式
- text/xml: XML格式
- image/gif: gif圖片格式
- image/jpeg: jpg圖片格式
- image/png: png圖片格式
以application開頭的媒體格式類型如下 - application/xhtml+xml: XHTML格式
- application/xml: XML數據格式
- application/atom+xml: Atom XML聚合格式
- application/json: JSON數據格式
- application/pdf: pdf格式
- application/msword: Word文檔格式
- application/octet-stream: 二進制流數據
- application/x-www-form-urlencoded: <form encType="">中默認的encType,form表單數據被編碼為key/value格式發送到服務器(表單默認的提交數據的格式)。
3. multipart/form-data
- 另外一種常見的媒體格式是上傳文件之時使用的。
- 需要在表單中進行文件上傳時,就需要使用該格式。
(6)Tranport頭域
Connection
- Connection: keep-alive: 當一個網頁打開完成后,客戶端和服務器之間用戶傳輸HTTP數據的TCP連接不會關閉,如果客戶端再次訪問這個服務器上的網頁,會繼續使用這一條已經建立的連接。
- Connection: close: 代表一個request完成后,客戶端和服務器之間用於傳輸HTTP數據的TCP連接會關閉,當客戶端再次發送request時,需要重新建立TCP連接。
Host(發送請求時,該報頭域是必須的) - 請求報頭域主要用於指定被請求資源的Internet主機和端口號。它通常從HTTP URL中提取出來。
