1、概述
使用postman工具和nc命令分析http協議中body各種類型的格式。
2、分析
環境準備
虛擬機中用nc命令模仿服務器,啟動監聽狀態。
windows機器安裝postman
nc -k -l 192.168.202.223 8082
1、params參數
postman中params添加倆個key為m、n;value為1、2;
服務器接收到的信息如圖所示,新添加的m、n參數被附加在請求頭的請求行中,位于請求路徑之后。示例中的請求路徑顯示為:/path?m=1&n=2
2、body是none類型
postman中body類型選擇none
如圖所示,服務器接收到的請求既無請求體,請求頭中也沒有content-length字段。
3、body是form-data類型
postman中body類型選擇form-data,新增加key為a、b
如圖所示,服務器接收到的請求信息包含以下關鍵內容:
請求頭部分:
- Content-Type 為 multipart/form-data
- 包含 boundary 參數,用于定義分隔不同數據部分的邊界字符串
- 邊界字符串必須唯一且不能出現在數據內容中
- Content-Length 為 258,表示請求包體的總長度
包體結構:
- 每個數據部分以 "--{boundary}" 開頭
- 最后一個部分以 "--{boundary}--" 結尾(多出兩個短橫線作為結束標記)
4、body是x-www-form-urlencoded
postman中body類型選擇x-www-form-urlencoded,新增加key為p1、p2
如圖所示,服務器收到的請求,包體為p1=1&p2=2
5、body是raw
postman中body類型選擇raw
如圖所示,服務器收到的請求,包體為
<window>
????<width>
????????12
????<\width>
<\window>
5、body是binary
postman中body類型選擇binary,選擇一個文件;比如,我這里選擇的是test.txt
如圖所示,服務器收到的請求,包體為
111111111111
22222222222222
3333333333
4444444444
其實就是文件(test.txt)的文件內容
從上面看,當發送請求有包體時,請求頭中要有Content-Length字段,表明包體的長度。
學習鏈接:https://github.com/0voice