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.0 example1.com, 1.1 example2.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和緩存有關等等,知道這些應該對之后的接口連接有一些幫助,希望能幫助到大家~

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM