http請求頭中的content type屬性

2021-10-05 22:35:22 字數 3464 閱讀 7210

在http請求中,我們每天都在使用content-type來指定不同格式的請求資訊,但是卻很少有人去全面了解content-type中允許的值有多少,因此這裡來了解一下content-type的可用值,以及在spring mvc中如何使用它們來對映請求資訊。

什麼是content-type

要知道什麼是content-type,首先要了解什麼是internet media type。internet media type即網際網路**型別,也叫做mime型別,使用兩部分識別符號來確定乙個型別。在http協議訊息頭中,使用content-type來表示具體請求中的**型別資訊,意思就是說,content-type是internet media type在http協議中的別稱。

type/subtype(;parameter)? type

上面是content-type的格式,可以拆解為三個部分,分別是主型別(type)、子型別(subtype)和引數(parameter)。

主型別(type)

主型別可以是任意的字串,比如text。如果是*號則代表所有型別。

子型別(subtype)

子型別可以是任意的字串,比如html。如果是*號則代表所有型別。

引數(parameter)

引數是可選的,可以在content-type中加入一些特殊的引數,比如accept請求頭的引數,常見的有用於設定字元編碼的charset引數。

content-type: text/html;charset:utf-8;

content-type中常見的**格式型別

以text開頭的**格式型別:

text/html: html格式。

text/plain:純文字格式。

text/xml: xml格式。

以image開頭的**格式型別:

另外還有一種常見的**格式是上傳檔案之時使用的:

multipart/form-data : 需要在表單中進行檔案上傳時,就需要使用該格式。

以上就是我們在日常的開發中,經常會用到的若干content-type的內容格式。

@target()

@retention

(retentionpolicy.runtime)

@documented

public @inte***ce

; requestmethod[

]method()

default

; string[

]params()

default

; string[

]headers()

default

; string[

]consumes()

default

; string[

]produces()

default

;}

下面對註解提供的引數進行簡單解析。method: 指定請求的method型別, 比如get、post、put、delete等。

produces:指定返回的內容型別,僅當request請求頭中的(accept)型別中包含該指定型別才返回。

params:指定request中必須包含某些引數值,才讓該方法處理。

headers:指定request中必須包含某些指定的header值,才能讓該方法處理請求。

其中,consumes、produces可以使用content-type中的資訊對不需要的資訊進行過濾,僅接受需要的資料;headers則可以使用content-type中的資訊對請求進行過濾和判斷。

這裡列舉出request headers(請求頭)和response headers(響應頭)中的候選屬性。

request headers的候選屬性

可以看到,content-type是request headers中的乙個候選屬性。

response headers的候選屬性

具體使用示例

這裡通過幾個具體的例項來了解怎麼在spring mvc中使用兩個headers中的資訊。

示例1:headers屬性取request headers中的referer屬性。

(value =

"/yanggb2"

, method = requestmethod.get, headers=

"referer="

)public

void

yanggb2()

這裡的headers裡面可以匹配所有headers裡面可以出現的資訊,不侷限於referer資訊。

示例2:headers屬性取request headers中的accept屬性。

當你有如下accept頭,將遵守如下規則進行應用:

引數為**型別的質量因子,越大則優先權越高(從0到1)。

③accept:/,text/*,text/html

將按照如下順序進行produces的匹配 ①text/html ②text/* ③*/*。

即匹配規則為:最明確的優先匹配。

示例3:params屬性取引數。

(value =

"/yanggb/"

, method = requestmethod.get, params =

"yanggb1=yanggb2"

)public

void

finduser

(@pathvariable string userid)

在上面的**中,就起到了乙個過濾的作用。

例項4:consumes/produces屬性過濾請求。

@controller

(value =

"/users"

, method = requestmethod.post, consumes=

, produces =

)@responsebody

public list

adduser

(@requestbody user userl)

HTTP請求頭中的長連線和短連線詳解

專案中,發現乙個問題,有的文字顯示不全,顯示一半就結束了,然後,我看響應頭,發現狀態碼為200的響應頭有transfer encoding chunked。顯示不全的請求中,沒有這個header,所以我懷疑是不是這個問題導致的。因為瀏覽器可以通過 content length 的長度資訊,判斷出響應...

Http訊息頭中常用的請求頭和響應頭

常用標準請求頭欄位 host 設定伺服器網域名稱和tcp埠號,如果使用的是服務請求標準埠號,埠號可以省略 host en.wikipedia.org 8080 host en.wikipedia.org if match 設定客戶端的etag,當時客戶端etag和伺服器生成的etag一致才執行,適用...

http頭中的host欄位詳解

host 客戶端指定自己想訪問的http伺服器的網域名稱 ip 位址和埠號。今天同事問了乙個問題引發了我對http頭中host欄位的詳細思考,總結了以下5條。1.host欄位可以是網域名稱,也可以是ip位址。host欄位網域名稱 ip後可以跟埠號,如host www.6san.com 8080 2....