1. 程式人生 > 實用技巧 >http中請求報文request headers和響應報文response headers

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型別
格式:Content-Type:type/subtype ;parameter

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和快取有關等等,知道這些應該對之後的介面連線有一些幫助,希望能幫助到大家~