http協議 資料協商

2021-09-30 20:10:15 字數 861 閱讀 1235

http協議中,可以通過內容協商返回最合適的內容,例如根據瀏覽器的預設語言選擇返回中文介面還是英文介面。

在客戶端傳送給服務端乙個請求的時候,客戶端可以宣告該請求所期望獲得的資料格式和資料相關的一些屬性,服務端會根據客戶端宣告的請求做出判斷並給出相應的結果

實現方式一:

客戶端設定特定的 http 首部字段,例如 accept、accept-charset、accept-encoding、accept-language,伺服器根據這些字段返回特定的資源。

1. 在客戶端的請求中

2. 在服務端返回時

存在以下問題:

伺服器很難知道客戶端瀏覽器的全部資訊;

客戶端提供的資訊相當冗長(http/2 協議的首部壓縮機制緩解了這個問題),並且存在隱私風險(http 指紋識別技術);

給定的資源需要返回不同的展現形式,共享快取的效率會降低,而伺服器端的實現會越來越複雜。

實現方式二:

伺服器通過返回 300 multiple choices 或者 406 not acceptable,客戶端從中選出最合適的那個資源

vary: accept-language
在使用內容協商的情況下,只有當快取伺服器中的快取滿足內容協商條件時,才能使用該快取,否則應該向源伺服器請求該資源。

例如,乙個客戶端傳送了乙個包含 accept-language 首部欄位的請求之後,源伺服器返回的響應包含vary: accept-language內容,快取伺服器對這個響應進行快取之後,在客戶端下一次訪問同乙個 url 資源,並且 accept-language 與快取中的對應的值相同時才會返回該快取。

http2 協議協商過程

http 2 協議剛剛發布不久,http1.1的伺服器和客戶端依然大量存在,新老協議必定長期共存一段時間。這樣,瀏覽器和伺服器就需要協商使用何種協議進行通訊。主流的方法是使用alpn或者npn來做協商。區別是有的。就在於誰持有會話協議的決定權。alpn是由客戶端給伺服器傳送乙個協議清單,由伺服器來最...

HTTP2的協議協商機制

http 2 使用和 http 1.1 一樣的 http 和 https 的 url 模式。同時 http 2 和 http 1.1 也共享了相同的預設埠號 http 的 80 埠,https 的 443 埠。字串 h2c 標示執行在明文 tcp 之上的 http 2 協議 http模式 字串 h2...

HTTP 內容協商質量值

在 http 協議裡用 accept accept encoding accept language 等請求頭欄位進行內容協商的時候,還可以用一種特殊的 q 引數表示權重來設定優先順序,這裡的 q 是 quality factor 的意思。權重的最大值是 1,最小值是 0.01,預設值是 1,如果值...