標籤:http 原理 協議
http協議之URL文法詳解
URL :Unifrom Resource Locator
URL方案:scheme
伺服器位址:ip:port
資源路徑;
http://www.mageedu.com:80/bbs/index.php
https://
基本文法:
<scheme>://<user>:<password>@<host>:<port>/<path>;<params>?<query>#<frag>
params:參數,如gender=f
http://www.mageedu.com/bbs/hello;gender=f
query:查詢
http://www.mageedu.com/bbs/item.php?username=tom&title=abc
frag:片段,#為錨定符號,定位於較大頁面的某一個片段
相對URL:不完整的路徑,相對某一資源路徑來擷取下一個資源的路徑指明方式
絕對URL:
同一站內資源使用相對URL,跨站應用時用絕對URL,當然同站內資源使用絕對URL也是沒問題的
http協議:
http/0.9,http/1.0,http/1.1,http/2.0
http協議:stateless
http協議之cookie、session和http事務
伺服器無法持續追蹤訪問者來源
所以需要通過cookie,session來實現
http事務:
請求:request
響應:response
報文文法格式:
request報文
<method> <request-URL> <version>
<headers>
<entity-body>
response報文
<version> <status> <reason-phrase>
<headers> //響應首部
<entity-body>
method:要求方法,標明用戶端希望伺服器對資源執行的動作
GET HEAD POST
version:
HTTP/<major>.<minor>
status:
響應狀態代碼,用三位元字,如200,301,302,404,502;用於標記請求處理過程中發生的情況;
reason-phrase:
狀態代碼所標記的狀態的簡要描述;如200 返回的OK,404返回的not found
headers:
每個請求或響應報文可包含任意首部;每個首部都有一個首部名稱,後面跟一個冒號,而後跟上一個可選空格,接著是一個值;
entity-body:
請求時附加的資料或響應時附加的資料;
----------------------------------------------------------------------------------------------------------
method(方法):
GET:從伺服器擷取一個資源;
HEAD:只從伺服器擷取文檔的響應首部;
POST:向伺服器發送伺服器要處理的資料;在請求內容中是有資料的,包含在entity-body中
PUT:將請求的主題部分儲存在伺服器上,簡單來說向伺服器上傳資料;此時entity-body中一定包含內容
DELETE:請求刪除伺服器上指定的文檔;
TRACE:追蹤請求到達伺服器中間經過的Proxy 伺服器;
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 Permantly
302:與301相似,但在響應報文中通過Location指明資源現在所處臨時新位置;
304:用戶端發出了條件式請求,但伺服器上的資源未曾發生改變,則通過響應此響應狀態代碼通知用戶端;not Modified
401:需要輸入帳號和密碼認證方能訪問資源;Unauthorized
403:請求被禁止;Forbidden
404:伺服器無法找到用戶端請求的資源;Not Found
500:伺服器內部錯誤;Internal Server error
502:Proxy 伺服器從後端伺服器收到了一條偽響應;bad gateway
----------------------------------------------------------------------------------------------------------
headers樣式:
格式:
Name:value
如:
Response Headers (響應首部)
Cache-Control:no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Connection:keep-alive
Content-Encoding:gzip
Content-Type:text/html
Date:Thu, 27 Jul 2017 08:07:48 GMT
Expires:Thu, 19 Nov 1981 08:52:00 GMT
Load-Balancing:web01
Load-Balancing:web01
Pragma:no-cache
Server:Tengine
Transfer-Encoding:chunked
Vary:Accept-Encoding
Vary:Accept-Encoding
Request Headers (請求首部)
Accept:application/json, text/javascript, */*; q=0.01
Accept-Encoding:gzip, deflate
Accept-Language:zh-CN,zh;q=0.8
Connection:keep-alive
Host:edu.51cto.com
Referer:http://edu.51cto.com/course/5547.html
User-Agent:Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/59.0.3071.115 Safari/537.36
X-Requested-With:XMLHttpRequest
----------------------------------------------------------------------------------------------------------
首部的分類:(通用首部、請求首部、響應首部、實體首部)
通用首部(既可以用在請求報文中,又可以用在響應報文中)
Date:報文的建立時間
Connection:串連方式,如keepalive,close
Via:顯示報文經過的中間節點
Cache-Control:控制緩衝的生效機制
Pragma
----------------------------------------------------------------------------------------------------------
請求首部:
Accept:通知伺服器自己可接受的媒體類型;
Accept-Charset:通知伺服器能接受的字元集
Accept-Encoding:通知伺服器可接受的編碼格式,如gzip
Accept-Language:通知伺服器可接受的語言
Client-IP:用戶端ip
Host:請求的伺服器名稱和連接埠號碼
Referer:包含當前正在請求的資源的上一級資源
User-Agent:用戶端代理類型
條件式請求首部:
Expect
If-Modified-since:自從指定的時間之後,請求的資源是否發生修改
If-Unmodified-since:
If-None-Match:本機快取中儲存的文檔的Etag標籤是否與伺服器文檔
的Etag不匹配
If-Match:本機快取中儲存的文檔的Etag標籤是否與伺服器文檔
的Etag匹配
安全請求首部:
Authorization:向伺服器發送認證資訊,如帳號和密碼;
Cookie:用戶端向伺服器發送cookie
Cookie2:用戶端向伺服器發送cookie2
代理請求首部:
Proxy-Authorization:向Proxy 伺服器認證
----------------------------------------------------------------------------------------------------------
響應首部:
資訊性首部:
Age:響應持續時間長度
Server:伺服器程式軟體名稱和版本
協商首部:(某自願有多種表示方法時使用)
Accept-Ranges:伺服器可接受的請求範圍類型
Vary:伺服器查看的其他首部列表
安全響應首部:
Set-Cookie:向用戶端設定cookie
Set-Cookie2:向用戶端設定cookie2
WWW-Authenticate:來自伺服器的對用戶端的質詢認證表單
實體首部:
Allow:列出對此試題可使用的要求方法
Location:告訴用戶端真正的實體位於何處
Content-Encoding:內容的編碼格式
Content-Language:內容的語言
Content-Length:主體的長度
Content-Location:實體真正所處的位置
Content-Type:主體的物件類型
緩衝相關:
Etag:實體的擴充標籤
Expires:實體的到期時間;
Last-Modified:最後一次修改的時間
本文出自 “IT看看看” 部落格,請務必保留此出處http://jinlong.blog.51cto.com/3276088/1951479
http原理學習筆記