HTTP報文
HTTP報文
目錄
可以參考相關連結
https://blog.csdn.net/lyn_00/article/details/84953763
https://www.cnblogs.com/kikochz/p/12751405.html
https://www.cnblogs.com/ldq2016/p/9055933.html
報文 = 報文行 + 報文頭 + 報文體
請求報文
請求行
<im
-
請求方式
GET:沒有請求體,引數通過鍵值對傳遞,形如
www.baidu.com/query?user=username&pass=password
如果資料是英文字母/數字,原樣傳送,如果是空格,轉換為+,如果是中文/其他字元,則直接把字串用BASE64加密
OPTIONS:預檢請求,不會攜帶Cookie和引數
參考連結: https://www.jianshu.com/p/5cf82f092201?tdsourcetag=s_pctim_aiomsg
HEAD:與GET類似,但是返回的響應中沒有響應體,一般用於判斷某個資源是否存在
@ResponseBody @RequestMapping(value = "/test", method = RequestMethod.HEAD) public String test() { return "hello world"; }
POST: 一般請求行種沒有引數,有請求體,具體資料存在請求體中,注意這裡用POSTMAN或是fiddler模擬的請求不能模擬出瀏覽器的效果
- PUT:更新請求
- DELETE:刪除請求
請求頭
-
User-Agent:表示首部包含了一個特徵字串,用來讓網路協議的對端來識別發起請求的使用者代理軟體的應用型別、作業系統、軟體開發商以及版本號
-
Connection:keep-alive , 開啟HTTP持久連線,預設值
-
Accept:表示請求接受響應報文必須是該MIME型別的
accept: Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9
這裡的
*/*
表示接收所有MIME 型別 , 所以前面表示接收的順序
application/json
也是MIME型別 -
Accept-Charset:告訴伺服器能傳送哪些字符集
-
Accept-Encoding:告訴伺服器能傳送哪些編碼方式
-
Authorization:授權資訊
-
Referer:請求來自哪裡,以URL的方式顯示
-
Host:接受請求的主機名和埠,80埠不用顯示
-
Cookie:客戶端用它像伺服器傳送資料
-
Content-Type:請求體內容的型別,get沒有請求體所以沒有該屬性
-
Content-Length:請求體的長度
-
DNT(do not track):表明使用者對於網站的追蹤偏好
0代表願意被追蹤
1代表不願意被追蹤
空行
告訴服務端請求頭部到此為止
請求體
-
GET沒有請求體
-
POST有請求體
應答報文
響應行
- 狀態碼
響應頭
-
Content-Length:響應體的長度
-
Content-Type:響應體內容的型別
-
Content-Disposition:告訴瀏覽器以下載方式開啟資料
-
Expires:
-
Cache-Control:告訴瀏覽器如何控制響應內容的快取
具體參考https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Headers/Cache-Control
- private:內容只快取到私有快取中(僅客戶端可以快取,代理伺服器不可快取)
- public:所有內容都將被快取(客戶端和代理伺服器都可快取)
- max-age= xxx :設定快取儲存的最大週期,超過這個時間快取被認為過期(單位秒)。與
Expires
相反,時間是相對於請求的時間。 - no-cache: 在釋出快取副本之前,強制要求快取把請求提交給原始伺服器進行驗證(協商快取驗證)。
- no-store:所有內容都不會被快取到快取或 Internet 臨時檔案中
響應體