以百度為例
GET /favicon.ico HTTP/1.1
Host: www.baidu.com
Connection: keep-alive
Pragma: no-cache
Cache-Control: no-cache
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.89 Safari/537.36
Accept: image/webp,image/apng,image/*,*/*;q=0.8
Sec-Fetch-Site: same-origin
Sec-Fetch-Mode: no-cors
Sec-Fetch-Dest: image
Referer: https://www.baidu.com/
Accept-Encoding: gzip, deflate, br
Accept-Language: en,zh-CN;q=0.9,zh;q=0.8
Cookie: BIDUPSID=A25EA168B55DD7B4FB0A6342CA748B8C; PSTM=1576809266; BD_UPN=12314753; BAIDUID=A25EA168B55DD7B457BA8613C76F2D5C:SL=0:NR=10:FG=1; sugstore=0; sug=3; ORIGIN=0; bdime=0; BDUSS=k0ODlSS09zUVFTenR5ZWVnd2ZrNE5wV3RGVTdJcFR1aWN3b3Y4Uzh5Y0lQTWRlSVFBQUFBJCQAAAAAAAAAAAEAAACuVu1KQ0pBbWF0ZXVyAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAivn14Ir59eSj; COOKIE_SESSION=11537_0_9_6_7_50_1_1_9_7_99_0_0_0_30_0_1595386282_0_1595397789%7C9%230_0_1595397789%7C1; BDUSS_BFESS=k0ODlSS09zUVFTenR5ZWVnd2ZrNE5wV3RGVTdJcFR1aWN3b3Y4Uzh5Y0lQTWRlSVFBQUFBJCQAAAAAAAAAAAEAAACuVu1KQ0pBbWF0ZXVyAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAivn14Ir59eSj; BD_HOME=1; delPer=0; BD_CK_SAM=1; PSINO=5; BDORZ=B490B5EBF6F3CD402E515D22BCDA1598; BDRCVFR[feWj1Vr5u3D]=I67x6TjHwwYf0; H_PS_645EC=6edcKRnz3eq3%2FGZkOSf6G1deQokMgt%2F%2BOIZog1%2Baj7nECxrvOXSSE0XyxwuA%2ByGVqan%2B; H_PS_PSSID=32288_1450_32359_32327_32045_31640_22157
1) HOST
請求頭指明了請求將要發送到的服務器主機名和端口號。
如果沒有包含端口號,會自動使用被請求服務的默認端口(比如HTTPS URL使用443端口,HTTP URL使用80端口)。
2) Connection
客戶端或服務端用來告訴對方當前tcp連接的狀態
Connection:keep-alive 網絡連接就是持久的,不會關閉,使得對同一個服務器的請求可以繼續在該連接上完成。HTTP/1.1的請求默認
Connection:close 在響應結束后關閉連接,這是HTTP/1.0請求的默認值
3) prama
Pragma
是一個在 HTTP/1.0 中規定的通用首部,這個首部的效果依賴於不同的實現,所以在“請求-響應”鏈中可能會有不同的效果。它用來向后兼容只支持 HTTP/1.0 協議的緩存服務器,那時候 HTTP/1.1 協議中的 Cache-Control 還沒有出來。
注意:由於 Pragma 在 HTTP 響應中的行為沒有確切規范,所以不能可靠替代 HTTP/1.1 中通用首部 Cache-Control,盡管在請求中,假如 Cache-Control 不存在的話,它的行為與 Cache-Control: no-cache 一致。建議只在需要兼容 HTTP/1.0 客戶端的場合下應用 Pragma 首部。
4) Cache-Control
對緩存進行控制,如一個請求希望響應返回的內容在客戶端要被緩存一年,或不希望被緩存就可以通過這個報文頭達到目的
Cache-Control: no-cache 在發布緩存副本之前,強制要求緩存把請求提交給原始服務器進行驗證(協商緩存驗證)。
6) User-Agent
服務器端和客戶端腳本都能訪問它,它是瀏覽器類型檢測邏輯的重要基礎.該信息由你的瀏覽器來定義,並且在每個請求中自動發送
7)Accept
請求報文可通過一個“Accept”報文頭屬性告訴服務端,客戶端接受什么類型的響應。
如下報文頭相當於告訴服務端,客戶端能夠接受的響應類型僅為純文本數據
Accept:text/plain
通配符 * 代表任意類型。如下代表瀏覽器可以處理所有類型
Accept: */*
Accept屬性的值可以為一個或多個MIME類型的值(描述消息內容類型的因特網標准, 消息能包含文本、圖像、音頻、視頻以及其他應用程序專用的數據)
8) Referer
表示這個請求是從哪個URL過來的,假如你通過百度搜索出一個商家的廣告頁面,你對這個廣告頁面感興趣,鼠標一點發送一個請求報文到商家的網站,這個請求報文的Referer報文頭屬性值就是 https://www.baidu.com/
9) Accept-Encoding
瀏覽器客戶端用來告訴服務器能接受什么編碼格式,包括字符編碼、壓縮方式等
例如:Accept-Encoding:gzip, deflate
10) Accept-Language
瀏覽器客戶端用來告訴服務器能接受什么語言。
例如:Accept-Language:zh-CN,zh;q=0.9
11) cookie
客戶端的Cookie就是通過這個報文頭屬性傳給服務端的,如下所示:
Cookie: $Version=1; jsessionid=5F4771183629C9834F8382E23
jsessionid就是用來判斷當前用戶對應於哪個session。換句話說服務器識別session的方法是通過jsessionid來告訴服務器該客戶端的session在內存的什么地方。(當然也可以通過重寫URL的方式將會話ID附帶在每個URL的后面,在禁用cookie的時候可以用這個方法)。
Jsessionid只是tomcat的對sessionid的叫法,其實就是sessionid;在其它的容器也許就不叫jsessionid了。
cookie、session、sessionid 與jsessionid