1.什么是http
超文本傳輸協(xié)議弥鹦,是因特網(wǎng)上應(yīng)用最為廣泛的一種網(wǎng)絡(luò)傳輸協(xié)議向抢,所有www文件遵守這個標準。
web數(shù)據(jù)交換的基礎(chǔ)硕淑,是一種client-server協(xié)議课竣,是由像瀏覽器的這種接收方發(fā)起的。使用web瀏覽器置媳,網(wǎng)絡(luò)爬蟲或者其他工具于樟,客戶端發(fā)起一個到服務(wù)端指定端口【默認為80】的HTTP請求。
HTTP是基于TCP/IP通信協(xié)議來傳遞數(shù)據(jù)的拇囊。HTTP用TCP而不是UDP是因為打開一個網(wǎng)頁必須要傳輸很多數(shù)據(jù)迂曲,TCP協(xié)議提供傳輸控制,按順序數(shù)據(jù)和錯誤糾正寥袭。
客戶端和服務(wù)端請求和應(yīng)答的標準TCP路捧。
2.工作原理
瀏覽器作為HTTP客戶端通過URL向HTTP服務(wù)端發(fā)送請求,服務(wù)器接收到后進行響應(yīng)传黄。
URL傳輸協(xié)議:
1.服務(wù)器杰扫。通常為域名。
2.端口號膘掰。HTTP默認為80.
3.路徑章姓。/分隔目錄
4.查詢。?為起點凡伊,&隔開零渐,=分開參數(shù)名與數(shù)據(jù)。
URL請求過程
輸入網(wǎng)址后 => 瀏覽器發(fā)送request向服務(wù)器獲取html文件 =>服務(wù)器返回response => 瀏覽器分析response的html發(fā)現(xiàn)還需要css窗声,js等 =>request向服務(wù)器 =>下載完成 =>顯示網(wǎng)頁
3.HTTP協(xié)議特點
1.無線連接
限制每次只能處理一個請求,服務(wù)器處理完客戶的請求后得到了客戶的反饋后就斷開了連接辜纲。
可以節(jié)約時間笨觅。
2.媒體獨立
處理的內(nèi)容均為http發(fā)送,客戶端和服務(wù)端指定使用合適的MIME-type內(nèi)容類型耕腾。
3.無狀態(tài)的
表示在兩次傳輸之間沒有記憶能力见剩,信息之間是相互獨立的。
為了實現(xiàn)網(wǎng)站之間的交互扫俺,可以使用HTTP Cookies苍苞,把cookies添加在頭部,創(chuàng)建一個會話可以每次請求都可共享相同的上下文信息狼纬,相同的通信羹呵。
4.主要內(nèi)容
包含內(nèi)容
完整的HTTP請求和響應(yīng):
1.http消息結(jié)構(gòu)
2.http請求方法
3.http相應(yīng)頭信息
4.http狀態(tài)碼
消息結(jié)構(gòu)
http是基于客戶端/服務(wù)端c/sde架構(gòu)模型,通過可靠的鏈接交換信息疗琉,是一個無狀態(tài)的請求/響應(yīng)協(xié)議冈欢。
1.客戶端請求消息
組成:請求行request,請求頭部header盈简,空行和請求數(shù)據(jù)凑耻。
一個簡單的demo:客戶端請求
GET /hello。txt HTTP/1.1
User-Agent: curl/7.16.3 libcurl/7.16.3 OpenSSL/0.9.7l zlib/1.2.3
Host: www.example.com
Accept-Language: en, mi
2.服務(wù)端響應(yīng)消息
組成:狀態(tài)行柠贤,消息報頭香浩,空行和響應(yīng)正文 。
服務(wù)端響應(yīng)
HTTP/1.1 200 OK
Date: Mon, 27 Jul 2009 12:28:53 GMT
Server: Apache
Last-Modified: Wed, 22 Jul 2009 19:15:56 GMT
ETag: "34aa387-d-1568eb00"
Accept-Ranges: bytes
Content-Length: 51
Vary: Accept-Encoding
Content-Type: text/plain
輸出結(jié)果:
Hello World! My payload includes a trailing CRLF.
請求方法
最常用的是GRT和POST臼勉。區(qū)別
get
請求url時發(fā)送的
/test/demo_form.asp?name1=value1&name2=value2
1.請求可以被緩存邻吭。
2.可以保存在瀏覽器記錄里。
3.可以被收藏為書簽
4.不應(yīng)該在由敏感數(shù)據(jù)時使用
5.有長度限制
6.請求只應(yīng)當用于取回數(shù)據(jù)宴霸。
post方法
http主體中發(fā)送:
POST /test/demo_form.asp HTTP/1.1
Host: w3schools.com
name1=value1&name2=value2
1.請求不會被緩存
2.不會保存在瀏覽器中
3.不能收藏為書簽
4.對于長度沒有限制镜盯。
頭響應(yīng)信息
包括一個狀態(tài)行,一些響應(yīng)頭信息猖败,一個空行和文檔速缆。
HTTP/1.1 200 OK
Content-Type: text/html
Header2: ...
...
HeaderN: ...
(Blank Line)
<!doctype ...>
<html>
<head>...</head>
<body>
...
</body>
</html>
狀態(tài)碼
常用:
200請求成功
301資源鏈接被永久轉(zhuǎn)移到其他URL
404請求的資源網(wǎng)頁等不存在
500內(nèi)部服務(wù)器錯誤
大體分類:
1·· 信息,服務(wù)器收到請求恩闻,需要請求者繼續(xù)執(zhí)行操作
2··成功艺糜,操作被成功接受并處理
3··重定向,需要進一步操作即可完成請求
4··客戶端錯誤,請求包含語法錯誤或者無法完成請求
5··服務(wù)器錯誤破停,服務(wù)器在請求過程中發(fā)生了錯誤