http協議:
http/0.9 ,http/1.0 ,http/1.1 ,http/2.0
http協議:stateless
服務器無法持續追蹤訪問者來源
cookie,session
http事務:
請求:request
響應:response
報文語法格式:
request報文
<method> <request-URL> <version>
<headers>
<entity-body>
有可能為空,在請求報文中
response報文
<version> <status> <reason-phrase>
<headers>
<entity-body>
method:請求方法,標明客戶端希望服務器對資源執行的動作
GET、HEAD、PUT、POST、DELETE
version:通信協議的版本
HTTP/<major>.<minor>
status:通信返回狀態碼
三位數字:如200,301,302,404,502;標記請求處理過程中發生的情況
reason-phrase:
狀態碼所標記的狀態的簡要描述
headers:
每個請求或響應報文可包含任意個首部:每個首部都有首部名稱,后面跟一個冒號,而后跟上一個可選空格,接著是一個值
entity-body:
請求時附加的數據或響應時附加的數據
method(方法):
GET:從服務器獲取一個資源
HEAD:只從服務器獲取文檔的響應首部
PUT:將請求的主體部分存儲在服務器上
POST:向服務器發送要處理的數據
DELETE:請求刪除服務器上指定的文檔
TRACE:追蹤請求到達服務器中間經過的代理服務器
OPTIONS:請求服務器返回對指定資源支持使用的請求方法
協議查看或分析工具:
tcpdump、tshark、wireshark
status(狀態碼):
1xx:100-101,信息提示
2xx:200-206,成功
3xx:300-305,重定向
4xx:400-415,錯誤類信息,客戶端錯誤
5xx:500-505,錯誤類信息,服務器端錯誤
常用狀態碼:
200:成功,請求的所有數據通過響應報文的entity-body部分發送:OK
301:請求的URL指向的資源已經被刪除;但在響應報文中通過首部Location指明了資源現在所處的新文字:Moved Permanently
302:與301相似,但在響應報文中通過Location指明資源現在所處臨時新位置:Found
304:客戶端發出了條件式請求,但服務器上的資源未曾發生改變,則通過響應此響應狀態碼通知客戶端:Not Modified
401:需要輸入帳號和密碼認證方能訪問資源:Unauthorized
403:請求被禁止:Forbidden
404:服務器無法找到客戶端請求的資源:Not Found
500:服務器內部錯誤:Internal Server Error
502:代理服務器從上游/后端服務器收到了一條偽響應:Bad Gateway
headers:
格式:
Name:Value
Accept:image/webp,image/*,*/*;q=0.8
Accept-Encoding:gzip, deflate, sdch, br
Accept-Language:zh-CN,zh;q=0.8
Connection:keep-alive
Host:ss3.bdstatic.com
Referer:https://www.baidu.com/?tn=78040160_5_pg&ch=1
User-Agent:Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.82 Safari/537.36
Accept-Ranges:bytes
Age:1889089
Cache-Control:max-age=2592000
Connection:keep-alive
Content-Length:1504
Content-Type:image/png
Date:Fri, 07 Oct 2016 04:34:08 GMT
ETag:"55648df6-5e0"
Expires:Sat, 15 Oct 2016 07:49:18 GMT
Last-Modified:Tue, 26 May 2015 15:15:02 GMT
Ohc-Response-Time:1 0 0 0 0 0
Server:bfe/1.0.8.13-sslpool-patch
首部的分類:
通用首部
請求首部
響應首部
實體首部
擴展首部
通用首部:
Date:報文的創建時間
Connection:連接狀態,如keep-alive,close
Via:顯示報文經過的中間節點
Cache-Control:控制緩存
Pragma:
請求首部:
Accept:通過服務器自己可接收的媒體類型
Accept-Charset:允許接收的字符集
Accept-Encoding:接收編碼格式,如gzip
Accept-Language:接收的語言
Client-IP:
Host:請求的服務器名稱和端口號
Referer:包含當前正在請求的資源的上一級資源
User-Agent:客戶端代理
條件式請求首部:
expect:
If-Modified-Since:自從指定的時間之后,請求的資源是否發生過修改
If-Unmodified-Since:
If-None-match:本地緩存中存儲的文檔的Etag標簽是否與服務器文檔的Etag不匹配
If-match:
安全請求首部:
Authorization:向服務器發送認證信息,如帳號和密碼
Cookie:客戶端向服務器發送cookie
Cookie2:
代理請求首部:
Proxy-Authorization:向代理服務器認證
響應首部:
信息性:
Age:響應持續時長
Server:服務器程序軟件名稱和版本
協商首部:某資源有多種表達方式時使用
Accept-Ranges:服務器可接收的請求范圍類型
Vary:服務器查看的其它首部列表
安全響應首部:
Set-Cookie:向客戶端設置cookie
Set-Cookie;
WWW-Authenticate:來自服務器對客戶端的質詢認證表單
實體首部:
Allow:列出對此實體可使用的請求方法
Location:告訴客戶端真正的實體處于何處
Content-Encoding:編碼格式
Content-Language:使用的語言
Content-Length:主體的長度
Content-Location:實體真正所處位置
Content-Type:主體的對象類型
緩存相關:
ETag:實體的擴展標簽
Expires:實體的過期時間
Last-Modified:最后一次修改的時間
原創文章,作者:megedugao,如若轉載,請注明出處:http://www.www58058.com/50783