摘要:介紹Web開發的幾個發展階段;HTTP協議簡介,請求信息、響應信息的分析;HTTP工作原理。
*寫在前面:為了更好的學習python,博主記錄下自己的學習路程。本學習筆記基于廖雪峰的Python教程,如有侵權,請告知刪除。歡迎與博主一起學習Pythonヽ( ̄▽ ̄)? *
目錄
Web開發
HTTP協議簡介
HTTP請求信息
HTTP響應信息
HTTP工作原理
小結
Web開發
如今,很多軟件都是以web形式提供,比如新浪微博、網易新聞等等??梢哉f,Web應用開發是目前軟件開發中最重要的部分。
Web開發經歷了幾個階段:
1.靜態Web頁面,直接顯示靜態的HTML頁面,修改頁面則要編輯HTML源文件,早期的互聯網頁面就是靜態的。
2.出現CGI,Common Gateway Interface。頁面可以處理用戶發送的動態數據,比如用戶注冊。CGI用C/C++編寫。
3.出現ASP/JSP/PHP。由于Web應用修改頻率高,C/C++這樣的低級語言不適合Web開發。而腳本語言開發效率高,且與HTML結合緊密,因此迅速取代了CGI。ASP是微軟推出的用VBScript腳本編程的Web開發技術,JSP是用Java來編寫腳本,PHP本身是開源的腳本語言。
4.出現MVC,Model-View-Controller。為了提高Web的可維護性,引入了“模型-視圖-控制器”的模式,簡化了Web開發。
5.現階段,Web開發技術仍在快速發展,如異步開發等。
Python是一種解釋型的腳本語言,開發效率高,而且有許多Web開發框架以及成熟的模板技術,非常適合用來做Web開發。
HTTP協議簡介
HTTP協議(Hyper Text Transfer Protocol),字面意思為超文本傳輸協議。是瀏覽器與服務器之間的傳輸協議。
用戶通過瀏覽器向服務器發送HTTP請求信息(Request),服務器收到請求后,向瀏覽器發送響應信息(Response)。
我們用例子分析一下請求信息與響應信息具體是怎么樣的。
HTTP請求信息
用瀏覽器打開網頁之后,按F12,會出現一個開發者工具界面,在里面可以看到網頁的結構、通信信息等。
我們以163網易為例,在進入網易官網后,按F12,在出現的界面中選擇network,然后在左側選擇第一個文件,之后右側就會顯示相關信息,點擊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協議是1.1版本.
第二部分,是請求頭部。說明服務器要使用的附加信息。在這里第一行往后都屬于這一部分。
其中Host
表示請求的域名。
第三部分,空行。請求頭部后面的空行是必須的。
第四部分,請求數據。這里沒有請求數據。
HTTP響應信息
我們再來看一下響應信息部分:
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
第一部分,狀態行。說明HTTP版本、信息狀態碼和狀態信息。這里是第一行。
狀態碼200
表示請求成功。
第二部分,信息報頭。說明客戶端要使用的一些附加信息。第一行后面的都是。
其中Content-Type
表示響應的內容,text/html
表示HTML網頁。
第三部分,空行。消息報頭后面的空行是必須的。
第四部分,響應正文。即HTML源碼。
我們在開發者工具中點擊Response,就能看到:
HTTP工作原理
看了HTTP的請求信息和響應信息,我們來總結一下HTTP的工作原理。
第一步,建立連接。
瀏覽器與Web服務器的端口建立一個TCP連接。
第二步,發送HTTP請求。
瀏覽器向服務器發送HTTP請求,包括請求方法、路徑、域名以及其他相關Header。
第三步,接收HTTP請求并返回響應信息。
Web服務器解析請求,并返回響應信息,包括響應狀態、響應類型、其他相關Header以及響應正文。
第四步,釋放連接或繼續請求。
若connection為close,則Web服務器主動斷開連接;若connection為keepalive,則Web服務器繼續等待請求。
第五步,解析響應信息。
瀏覽器解析響應信息,包括響應頭和響應正文。最終解析HTML文本并顯示出來。
小結
想要詳細了解HTTP協議,可以看HTTP權威指南 (廖雪峰推薦)。
以上就是本節的全部內容,感謝你的閱讀。
下一節內容:Web開發之 HTML簡介
有任何問題與想法,歡迎評論與吐槽。
和博主一起學習Python吧( ̄▽ ̄)~*