HTTP報文格式詳解
阿新 • • 發佈:2019-02-09
HTTP報文傳過來都是一堆的0x ASCII碼,諸如“41 63 63 65 70 74” 對應的是“accept” 單詞的十六進位制ASCII碼。
這些十六進位制的數字經過瀏覽器或者專用工具比如wireshark的翻譯,可以得到HTTP的報文結構。
Request報文
以下是wireshark抓出來的一段HTTP請求報文
GET /admin_ui/rdx/core/images/close.png HTTP/1.1 Accept: */* Referer: http://xxx.xxx.xxx.xxx/menu/neo Accept-Language: en-US User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1; WOW64; Trident/7.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; .NET4.0C; .NET4.0E) Accept-Encoding: gzip, deflate Host: xxx.xxx.xxx.xxx Connection: Keep-Alive Cookie: startupapp=neo; is_cisco_platform=0; rdx_pagination_size=250%20Per%20Page; SESSID=deb31b8eb9ca68a514cf55777744e339
HTTP的請求報文包括:請求行(request line)、請求頭部(header)、空行 和 請求資料(request data) 四個部分組成。
請求行包括: 請求方法,URL(包括引數資訊),協議版本這些資訊(GET /admin_ui/rdx/core/images/close.png HTTP/1.1)
請求頭部是一個個的key-value值,比如
- Accept-Encoding: gzip, deflate
- User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1; WOW64; Trident/7.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; .NET4.0C; .NET4.0E)
請求資料:GET方法沒有攜帶資料
Response報文
下面是wireshark抓出來的一段響應報文
HTTP/1.1 200 OK Bdpagetype: 1 Bdqid: 0xacbbb9d800005133 Cache-Control: private Connection: Keep-Alive Content-Encoding: gzip Content-Type: text/html Cxy_all: baidu+f8b5e5b521b3644ef7f3455ea441c5d0 Date: Fri, 12 Oct 2018 06:36:28 GMT Expires: Fri, 12 Oct 2018 06:36:26 GMT Server: BWS/1.1 Set-Cookie: delPer=0; path=/; domain=.baidu.com Set-Cookie: BDSVRTM=0; path=/ Set-Cookie: BD_HOME=0; path=/ Set-Cookie: H_PS_PSSID=1433_21112_18560_26350_27245_22158; path=/; domain=.baidu.com Vary: Accept-Encoding X-Ua-Compatible: IE=Edge,chrome=1 Transfer-Encoding: chunked <!DOCTYPE html> <!--STATUS OK-->
HTTP的響應報文包括:狀態行,響應頭,空行,資料(響應體)
狀態行包括:HTTP版本號,狀態碼和狀態值組成。
響應頭類似請求頭,是一系列key-value值
- Cache-Control: private
- Content-Encoding: gzip
- Server: BWS/1.1
- Set-Cookie: delPer=0; path=/; domain=.baidu.com
空白行
響應體:響應的data,本例中是一段HTML