http中請求報文request headers和響應報文response headers
一、構成HTTP請求的簡單流程圖(圖摘錄的),如下:
Web Client可以是瀏覽器、搜尋引擎、機器人等等一切基於HTTP協議發起http請求的工具。Web Server可以是任何的能解析HTTP請求,並返回給Web Client可識別的響應的服務,常見的有apache、nginx、IIS等等web伺服器
二、客戶端跟服務的互動
要看圖還不明白中過程的話,那就更通俗的理解為:
- 在瀏覽器中輸入
URL
,並按下回車鍵 - 瀏覽器向
DNS
伺服器請求解析該URL
中的域名對應的IP
地址(如果是IP
請求,則不需要該步驟) - 解析出
IP
後,根據IP
和埠號,和伺服器建立TCP連線 - 瀏覽器向伺服器傳送請求,該請求報文作為
TCP
- 伺服器做出響應,把資料傳送給瀏覽器
- 通訊完成,斷開
TCP
連線 - 瀏覽器解析收到的資料並顯示
從中就可以延伸出以下要說的內容了。也就是互動直接的報文,這裡就簡單說說其中請求報文跟響應報文,主要也是方便新手簡單瞭解下,具體的底層還是得自己去查閱資料
response headers響應報文
當收到get或post等方法發來的請求後,伺服器就要對報文進行響應。
用於在http請求中伺服器向瀏覽器傳遞附加資訊,主要包括伺服器傳遞的資料型別,使用的壓縮方法,語言,以及伺服器的資訊和響應該請求的時間等.
以下為response 屬性
屬性名稱 |
意義 |
示例 |
Accept-Ranges |
Web伺服器表示自己是否接受獲取某個實體的一部分(比如檔案的一部分)的請求 bytes:接受 none:不接受 |
Accept-Ranges:bytes |
Access-Control-Allow-Origin |
指定哪些網站可以跨域源資源共享 |
Access-Control-Allow-Origin:* |
age |
響應物件在代理快取中存在的時間,以秒為單位 |
Age:234585576 |
Access-Control-Allow-Methods |
允許的http請求方法 |
Access-Control-Allow-Methods: POST, GET, OPTIONS |
Allow |
Allow支援標題列出資源集合的方法。 |
Allow: GET, POST, HEAD |
Connection |
告訴WEB伺服器或者代理伺服器,在完成本次請求的響應 後,該做什麼 close:斷開連線,不要等待本次連線的後續請求了 keep-alive:保持連線,等待本次連線的後續請求 |
Connection: keep-alive |
Cache-Control |
通知從伺服器到客戶端內的所有快取機制,表示它們是否可以快取這個物件及快取有效時間。其單位為秒 no-cache:可以在本地進行快取,但是每次發起請求都需要到伺服器去驗證一下,如果伺服器返回告訴你可以使用本地快取,你才可以去使用本地的快取 no-store:本地不可進行快取的,每次發起請求,都需要去服務端去拿去數ju public:在HTTP請求返回的內容經過的所有路徑中,都可以對返回內容進行一個快取的操作。 private:只有發起請求的瀏覽器才可以進行快取 max-age=<seconds>:快取多少秒之後才會過期。 s-maxage=<seconds>:它會替代max-age,但是隻有在 代理伺服器中才會起作用。 max-stale=<seonds>:當我們快取過期以後,如果有max-stale,只要在max-stale這個時間之內,還會使用過期的快取。只有在發起端設定才有用,在服務端設定沒有用。 must-revalidate:如果我們的和快取過期了,我們必須重新發送到源服務端,重新獲取這部分資料,來驗證這部分資料是否真的過期了 proxy-revalidate:用在快取伺服器中,快取過期後,必須要去源伺服器上重新請求一次,而不能使用本地的快取 |
Cache-Control:no-cache |
Content-Type |
伺服器告訴瀏覽器它傳送的資料屬於什麼檔案型別,也就是響應資料的MIME型別 type:主型別,任意的字串,如text,如果是*號代表所有; subtype:子型別,任意的字串,如html,如果是*號代表所有,用“/”與主型別隔開; parameter:可選引數,如charset,boundary等。 |
Content-Type: application/json;charset=utf-8 |
content-length |
響應資料的資料長度,單位是byte |
content-length: 0 |
Content-Encoding |
伺服器採用哪種編碼格式傳輸正文 其值有:gzip;x-gzip;compress等 |
Content-Encoding:gzip |
Date |
響應訊息傳送的GMT格式日期 |
date: Mon, 06 May 2019 22:48:29 GMT |
ETag |
就是一個物件(比如URL)的標誌值 主要供 WEB 伺服器 判斷一個物件是否改變了 |
|
Expired |
告訴客戶端該響應資料會在指定的時間過期,通常用於給客戶端快取作為參考。 |
expires: Thu, 28 Jun 2018 11:27:53 GMT |
via |
告訴客戶端,該回應經歷了那些代理。 |
Via: 1.0example1.com, 1.1example2.com(Apache/1.1) |
status |
返回的狀態碼 |
Status:200 |
Server |
伺服器名稱(伺服器通過這個頭告訴瀏覽器伺服器的型別) |
request headers請求報文
對於request headers可以理解為用於在請求訊息中向伺服器傳遞附加資訊,主要包括客戶機可以接受的資料型別,壓縮方法,語言,以及客戶計算機上保留的資訊和發出該請求的超連結源地址等
請求頭由key/value對組成,每行為一對,key和value之間通過冒號(:)分割。請求頭的作用主要用於通知服務端有關於客戶端的請求資訊
request headers屬性
Accept |
指定客戶端能夠接收(支援)的資料型別 |
Accept: */* |
Accept-Encoding |
指定瀏覽器可以支援的web伺服器返回內容壓縮編碼型別 |
Accept-Encoding: gzip, deflate, br |
Accept-Language |
瀏覽器所希望的語言種類 |
|
Cache-Control |
快取機制,伺服器通過控制瀏覽器要不要快取資料 |
Cache-Control: max-age=0 |
Connection |
表示是否需要持久連線。(HTTP 1.1預設進行持久連線) |
Connection: keep-alive |
Cookie |
HTTP請求傳送時,會把儲存在該請求域名下的所有cookie值一起傳送給web伺服器。 |
|
Host |
指定請求的伺服器的域名和埠號 |
Host: www.baidu.com |
Referer |
包含一個URL,使用者從該URL代表的頁面出發訪問當前請求的頁面。 |
|
From |
請求傳送者的email地址,由一些特殊的Web客戶程式使用,瀏覽器不會用到它。 |
Upgrade-Insecure-Requests:參考http://www.cnblogs.com/hustskyking/p/upgrade-insecure-requests.html
User-Agent:告訴伺服器,客戶機的軟體環境
這裡是response headers和request headers中所能觸及到的大部分內容,其中在response headers中Access-Control-Allow-Origin可以解決一些跨域問題,Allow和請求方法有關,cache-control和快取有關等等,知道這些應該對之後的介面連線有一些幫助,希望能幫助到大家~