摘要:介紹Web開發(fā)的幾個(gè)發(fā)展階段;HTTP協(xié)議簡介浮庐,請求信息、響應(yīng)信息的分析柬焕;HTTP工作原理审残。
*寫在前面:為了更好的學(xué)習(xí)python,博主記錄下自己的學(xué)習(xí)路程斑举。本學(xué)習(xí)筆記基于廖雪峰的Python教程搅轿,如有侵權(quán),請告知?jiǎng)h除懂昂。歡迎與博主一起學(xué)習(xí)Pythonヽ( ̄▽ ̄)? *
目錄
Web開發(fā)
HTTP協(xié)議簡介
HTTP請求信息
HTTP響應(yīng)信息
HTTP工作原理
小結(jié)
Web開發(fā)
如今介时,很多軟件都是以web形式提供,比如新浪微博凌彬、網(wǎng)易新聞等等沸柔。可以說铲敛,Web應(yīng)用開發(fā)是目前軟件開發(fā)中最重要的部分褐澎。
Web開發(fā)經(jīng)歷了幾個(gè)階段:
1.靜態(tài)Web頁面,直接顯示靜態(tài)的HTML頁面伐蒋,修改頁面則要編輯HTML源文件工三,早期的互聯(lián)網(wǎng)頁面就是靜態(tài)的。
2.出現(xiàn)CGI先鱼,Common Gateway Interface俭正。頁面可以處理用戶發(fā)送的動(dòng)態(tài)數(shù)據(jù),比如用戶注冊焙畔。CGI用C/C++編寫掸读。
3.出現(xiàn)ASP/JSP/PHP。由于Web應(yīng)用修改頻率高,C/C++這樣的低級語言不適合Web開發(fā)儿惫。而腳本語言開發(fā)效率高澡罚,且與HTML結(jié)合緊密,因此迅速取代了CGI肾请。ASP是微軟推出的用VBScript腳本編程的Web開發(fā)技術(shù)留搔,JSP是用Java來編寫腳本,PHP本身是開源的腳本語言铛铁。
4.出現(xiàn)MVC隔显,Model-View-Controller。為了提高Web的可維護(hù)性避归,引入了“模型-視圖-控制器”的模式荣月,簡化了Web開發(fā)。
5.現(xiàn)階段梳毙,Web開發(fā)技術(shù)仍在快速發(fā)展,如異步開發(fā)等捐下。
Python是一種解釋型的腳本語言账锹,開發(fā)效率高,而且有許多Web開發(fā)框架以及成熟的模板技術(shù)坷襟,非常適合用來做Web開發(fā)奸柬。
HTTP協(xié)議簡介
HTTP協(xié)議(Hyper Text Transfer Protocol),字面意思為超文本傳輸協(xié)議婴程。是瀏覽器與服務(wù)器之間的傳輸協(xié)議廓奕。
用戶通過瀏覽器向服務(wù)器發(fā)送HTTP請求信息(Request),服務(wù)器收到請求后档叔,向?yàn)g覽器發(fā)送響應(yīng)信息(Response)桌粉。
我們用例子分析一下請求信息與響應(yīng)信息具體是怎么樣的。
HTTP請求信息
用瀏覽器打開網(wǎng)頁之后衙四,按F12铃肯,會(huì)出現(xiàn)一個(gè)開發(fā)者工具界面,在里面可以看到網(wǎng)頁的結(jié)構(gòu)传蹈、通信信息等押逼。
我們以163網(wǎng)易為例,在進(jìn)入網(wǎng)易官網(wǎng)后惦界,按F12挑格,在出現(xiàn)的界面中選擇network,然后在左側(cè)選擇第一個(gè)文件沾歪,之后右側(cè)就會(huì)顯示相關(guān)信息漂彤,點(diǎn)擊view source可以看到具體的信息。
我們截取部分信息來分析一下。
先來看請求信息:
GET / HTTP/1.1
Host: www.163.com
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/57.0.2987.98 Safari/537.36 LBBROWSER
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
Referer: http://www.163.com/
Accept-Encoding: gzip, deflate, sdch, br
Accept-Language: zh-CN,zh;q=0.8
第一部分显歧,是請求行仪或。說明請求類型、訪問資源以及HTTP版本士骤。在這里是第一行范删。
GET
表示請求類型是GET請求,/
表示URL路徑拷肌,/
是首頁到旦,HTTP/1.1
表示采用的HTTP協(xié)議是1.1版本.
第二部分,是請求頭部巨缘。說明服務(wù)器要使用的附加信息添忘。在這里第一行往后都屬于這一部分。
其中Host
表示請求的域名若锁。
第三部分搁骑,空行。請求頭部后面的空行是必須的又固。
第四部分仲器,請求數(shù)據(jù)。這里沒有請求數(shù)據(jù)仰冠。
HTTP響應(yīng)信息
我們再來看一下響應(yīng)信息部分:
HTTP/1.1 200 OK
Expires: Thu, 20 Sep 2018 07:39:34 GMT
Date: Thu, 20 Sep 2018 07:38:14 GMT
Server: nginx
Content-Type: text/html; charset=GBK
Transfer-Encoding: chunked
Vary: Accept-Encoding,User-Agent,Accept
Cache-Control: max-age=80
Content-Encoding: gzip
X-Via: 1.1 PSgdmmsxsw84:1 (Cdn Cache Server V2.0), 1.1 PSgdzsydzd33:0 (Cdn Cache Server V2.0)
Connection: keep-alive
第一部分乏冀,狀態(tài)行。說明HTTP版本洋只、信息狀態(tài)碼和狀態(tài)信息辆沦。這里是第一行。
狀態(tài)碼200
表示請求成功识虚。
第二部分肢扯,信息報(bào)頭。說明客戶端要使用的一些附加信息舷礼。第一行后面的都是鹃彻。
其中Content-Type
表示響應(yīng)的內(nèi)容,text/html
表示HTML網(wǎng)頁妻献。
第三部分蛛株,空行。消息報(bào)頭后面的空行是必須的育拨。
第四部分谨履,響應(yīng)正文。即HTML源碼熬丧。
我們在開發(fā)者工具中點(diǎn)擊Response笋粟,就能看到:
HTTP工作原理
看了HTTP的請求信息和響應(yīng)信息,我們來總結(jié)一下HTTP的工作原理。
第一步害捕,建立連接绿淋。
瀏覽器與Web服務(wù)器的端口建立一個(gè)TCP連接。
第二步尝盼,發(fā)送HTTP請求吞滞。
瀏覽器向服務(wù)器發(fā)送HTTP請求,包括請求方法盾沫、路徑裁赠、域名以及其他相關(guān)Header。
第三步赴精,接收HTTP請求并返回響應(yīng)信息佩捞。
Web服務(wù)器解析請求,并返回響應(yīng)信息蕾哟,包括響應(yīng)狀態(tài)一忱、響應(yīng)類型、其他相關(guān)Header以及響應(yīng)正文渐苏。
第四步掀潮,釋放連接或繼續(xù)請求。
若connection為close琼富,則Web服務(wù)器主動(dòng)斷開連接;若connection為keepalive庄新,則Web服務(wù)器繼續(xù)等待請求鞠眉。
第五步,解析響應(yīng)信息择诈。
瀏覽器解析響應(yīng)信息械蹋,包括響應(yīng)頭和響應(yīng)正文。最終解析HTML文本并顯示出來羞芍。
小結(jié)
想要詳細(xì)了解HTTP協(xié)議哗戈,可以看HTTP權(quán)威指南 (廖雪峰推薦)。
以上就是本節(jié)的全部內(nèi)容荷科,感謝你的閱讀唯咬。
下一節(jié)內(nèi)容:Web開發(fā)之 HTML簡介
有任何問題與想法,歡迎評論與吐槽畏浆。
和博主一起學(xué)習(xí)Python吧( ̄▽ ̄)~*