HTTP協(xié)議

一 http協(xié)議簡(jiǎn)介

HTTP協(xié)議是Hyper Text Transfer Protocol(超文本傳輸協(xié)議)的縮寫(xiě),是用于萬(wàn)維網(wǎng)(WWW:World Wide Web )服務(wù)器與本地瀏覽器之間傳輸超文本的傳送協(xié)議。

HTTP是一個(gè)屬于應(yīng)用層的面向?qū)ο蟮膮f(xié)議,由于其簡(jiǎn)捷、快速的方式,適用于分布式超媒體信息系統(tǒng)。它于1990年提出,經(jīng)過(guò)幾年的使用與發(fā)展,得到不斷地完善和擴(kuò)展。HTTP協(xié)議工作于客戶端-服務(wù)端架構(gòu)為上。瀏覽器作為HTTP客戶端通過(guò)URL向HTTP服務(wù)端即WEB服務(wù)器發(fā)送所有請(qǐng)求。Web服務(wù)器根據(jù)接收到的請(qǐng)求后,向客戶端發(fā)送響應(yīng)信息。

image.png

二 http協(xié)議特性

(1)基于TCP/IP協(xié)議之上的應(yīng)用層協(xié)議

(2)基于請(qǐng)求-響應(yīng)模式

HTTP協(xié)議規(guī)定,請(qǐng)求從客戶端發(fā)出,最后服務(wù)器端響應(yīng)該請(qǐng)求并 返回。換句話說(shuō),肯定是先從客戶端開(kāi)始建立通信的,服務(wù)器端在沒(méi)有 接收到請(qǐng)求之前不會(huì)發(fā)送響應(yīng)

image.png

(3)無(wú)狀態(tài)保存

HTTP是一種不保存狀態(tài),即無(wú)狀態(tài)(stateless)協(xié)議。HTTP協(xié)議 自身不對(duì)請(qǐng)求和響應(yīng)之間的通信狀態(tài)進(jìn)行保存。也就是說(shuō)在HTTP這個(gè) 級(jí)別,協(xié)議對(duì)于發(fā)送過(guò)的請(qǐng)求或響應(yīng)都不做持久化處理。

image.png

使用HTTP協(xié)議,每當(dāng)有新的請(qǐng)求發(fā)送時(shí),就會(huì)有對(duì)應(yīng)的新響應(yīng)產(chǎn) 生。協(xié)議本身并不保留之前一切的請(qǐng)求或響應(yīng)報(bào)文的信息。這是為了更快地處理大量事務(wù),確保協(xié)議的可伸縮性,而特意把HTTP協(xié)議設(shè)計(jì)成 如此簡(jiǎn)單的??墒?隨著Web的不斷發(fā)展,因無(wú)狀態(tài)而導(dǎo)致業(yè)務(wù)處理變得棘手 的情況增多了。比如,用戶登錄到一家購(gòu)物網(wǎng)站,即使他跳轉(zhuǎn)到該站的 其他頁(yè)面后,也需要能繼續(xù)保持登錄狀態(tài)。針對(duì)這個(gè)實(shí)例,網(wǎng)站為了能 夠掌握是誰(shuí)送出的請(qǐng)求,需要保存用戶的狀態(tài)。HTTP/1.1雖然是無(wú)狀態(tài)協(xié)議,但為了實(shí)現(xiàn)期望的保持狀態(tài)功能, 于是引入了Cookie技術(shù)。有了Cookie再用HTTP協(xié)議通信,就可以管 理狀態(tài)了。有關(guān)Cookie的詳細(xì)內(nèi)容稍后講解

(4)無(wú)連接

無(wú)連接的含義是限制每次連接只處理一個(gè)請(qǐng)求。服務(wù)器處理完客戶的請(qǐng)求,并收到客戶的應(yīng)答后,即斷開(kāi)連接。采用這種方式可以節(jié)省傳輸時(shí)間。

回到目錄

三 http請(qǐng)求協(xié)議與響應(yīng)協(xié)議

http協(xié)議包含由瀏覽器發(fā)送數(shù)據(jù)到服務(wù)器需要遵循的請(qǐng)求協(xié)議與服務(wù)器發(fā)送數(shù)據(jù)到瀏覽器需要遵循的請(qǐng)求協(xié)議。用于HTTP協(xié)議交互的信被為HTTP報(bào)文。請(qǐng)求端(客戶端)的HTTP報(bào)文 做請(qǐng)求報(bào)文,響應(yīng)端(服務(wù)器端)的 做響應(yīng)報(bào)文。HTTP報(bào)文本身是由多行數(shù)據(jù)構(gòu)成的字 文本。

image.png

請(qǐng)求協(xié)議

請(qǐng)求格式:

image.png

image.jpeg

請(qǐng)求方式: get與post請(qǐng)求

GET提交的數(shù)據(jù)會(huì)放在URL之后,以?分割URL和傳輸數(shù)據(jù),參數(shù)之間以&相連,如EditBook?name=test1&id=123456. POST方法是把提交的數(shù)據(jù)放在HTTP包的請(qǐng)求體中.
GET提交的數(shù)據(jù)大小有限制(因?yàn)闉g覽器對(duì)URL的長(zhǎng)度有限制),而POST方法提交的數(shù)據(jù)沒(méi)有限制.
GET與POST請(qǐng)求在服務(wù)端獲取請(qǐng)求數(shù)據(jù)方式不同。

響應(yīng)協(xié)議

響應(yīng)格式

image.png
image.jpeg

響應(yīng)狀態(tài)碼

狀態(tài)碼的職 是當(dāng)客戶端向服務(wù)器端發(fā)送請(qǐng)求時(shí), 返回的請(qǐng)求 結(jié)果。借助狀態(tài)碼,用戶可以知道服務(wù)器端是正常 理了請(qǐng)求,還是出 現(xiàn)了 。狀態(tài)碼如200 OK,以3位數(shù)字和原因 成。數(shù)字中的 一位指定了響應(yīng) 別,后兩位無(wú)分 。響應(yīng) 別有以5種。

image.png

回到目錄

URL簡(jiǎn)介

統(tǒng)一資源定位符是對(duì)可以從互聯(lián)網(wǎng)上得到的資源的位置和訪問(wèn)方法的一種簡(jiǎn)潔的表示,是互聯(lián)網(wǎng)上標(biāo)準(zhǔn)資源的地址?;ヂ?lián)網(wǎng)上的每個(gè)文件都有一個(gè)唯一的URL,它包含的信息指出文件的位置以及瀏覽器應(yīng)該怎么處理它

格式:

 協(xié)議://IP:端口(80)/路徑?name=lqz&age=18

?之前的是請(qǐng)求路徑,?之后的是請(qǐng)求數(shù)據(jù)部分

py文件

import socket


sock=socket.socket()
sock.bind(("127.0.0.1",8808))
sock.listen(5)

while 1:
    print("server waiting.....")
    conn,addr=sock.accept()
    data=conn.recv(1024)
    print("data", data)

    # 讀取html文件
    with open("login.html","rb") as f:
        data=f.read()

    conn.send((b"HTTP/1.1 200 OK\r\nContent-type:text/html\r\n\r\n%s"%data))
    conn.close()

login.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>



<form action="" method="post">
    用戶名 <input type="text" name="user">
    密碼 <input type="password" name="pwd">
    <input type="submit">
</form>

</body>
</html>
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容