之前面試的時候很多人會問我有關http請求頭字段的意思,有些問的特別的偏,但明明實際很少用。問的我一愣一愣的,我就打算用這篇文章好好研究一下。
請求頭主要表達的是客戶端,也就是瀏覽器
具體來說http請求,分為三部分:請求行,請求頭, 請求體。
下面具體說的請求頭部分。
如圖
Accept:表示瀏覽器支持的 MIME 類型。
輸入值的example:text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,/;q=0.8
表示客戶端支持的數據格式,或者說客戶端“希望”接受到的內容類型。但不一定接收到相應的值。
所以啥是MIME類型?MIME (Multipurpose Internet Mail Extensions) 是描述消息內容類型的因特網標准。
Accept-Encoding:表示瀏覽器解碼方式。
對於我們主動發起的ajax請求,一般數據量較少,不需要設置該字段。
Accept-Language:表示客戶端接受的語言格式。
例子:zh-CN,zh;q=0.9
那個0.9代表的是zh的權重。
話說做不同語言的網站可以跟后端用這個字段配合,但我看見有人寫 一般不推薦這種方法。
Connection: keep-alive , 開啟HTTP持久連接
如果每次請求圖片等的時候,斷開tcp連接。下一個請求在連接tcp連接,就會造成對帶寬的過多消耗。
如果不設置,就是默認keep-alive(長連接)
Cookie:表示服務端給客戶端傳的http請求狀態。
因為Http是無狀態協議,無法感知到上一次請求狀態,所以產生了cookie。
后端可以操作這個cookie,並直接種到我們的瀏覽器中。
服務端通過 set-cookie這個響應頭來向客戶端中寫入 Cookie 信息。比如說我們在做登陸信息的時候,可以直接取出來用。
DNT:(Do Not Track)表明了用戶對於網站追蹤的偏好。
0代表願意被追蹤。
1代表不願意被追蹤。
Host:請求頭指明了服務器的域名(對於虛擬主機來說),以及(可選的)服務器監聽的TCP端口號。
HTTP/1.1中必須要指明Host,如果沒指明,或者指明多個,或返回404狀態。
Referer:表示請求的上一個頁面是什么。
我看其他的文章里有寫,這個字段可以用來做訪問統計。還可以做防盜鏈,比如你從其他站點引用了qq空間的圖是現實不了的,就是通過這個字段來判定的。
User-Agent:
表示首部包含了一個特征字符串,用來讓網絡協議的對端來識別發起請求的用戶代理軟件的應用類型、操作系統、軟件開發商以及版本號。
這個讓我想起了js中,會用window.navigator.userAgent 來判斷什么瀏覽器和手機系統版本號。
多加幾個圖里沒有的字段,哈哈哈
Access-Control-Request-Method:請求方法,比如post get delete 等。
暫時先這樣,后續還會改。