什么是HTTP協(xié)議? 協(xié)議是指計(jì)算機(jī)通信網(wǎng)絡(luò)中兩臺(tái)計(jì)算機(jī)之間進(jìn)行通信所必須共同遵守的規(guī)定或規(guī)則,超文本傳輸協(xié)議(HTTP)是一種通信協(xié)議,它允許將超文本標(biāo)記語言(HTML)文檔從Web服務(wù)器傳送到客戶端的瀏覽器 HTTP協(xié)議的主要特點(diǎn)可概括如下: 1.支持客戶/服務(wù)器模式。 2.簡單快速:客戶向服務(wù)器請(qǐng)求服務(wù)時(shí),只需傳送請(qǐng)求方法和路徑。請(qǐng)求方法常用的有GET、HEAD、POST。每種方法規(guī)定了客戶與服務(wù)器聯(lián)系的類型不同。由于HTTP協(xié)議簡單,使得HTTP服務(wù)器的程序規(guī)模小,因而通信速度很快。 3.靈活:HTTP允許傳輸任意類型的數(shù)據(jù)對(duì)象。正在傳輸?shù)念愋陀蒀ontent-Type加以標(biāo)記。 4.無連接:無連接的含義是限制每次連接只處理一個(gè)請(qǐng)求。服務(wù)器處理完客戶的請(qǐng)求,并收到客戶的應(yīng)答后,即斷開連接。采用這種方式可以節(jié)省傳輸時(shí)間。 5.無狀態(tài):HTTP協(xié)議是無狀態(tài)協(xié)議。無狀態(tài)是指協(xié)議對(duì)于事務(wù)處理沒有記憶能力。缺少狀態(tài)意味著如果后續(xù)處理需要前面的信息,則它必須重傳,這樣可能導(dǎo)致每次連接傳送的數(shù)據(jù)量增大。另一方面,在服務(wù)器不需要先前信息時(shí)它的應(yīng)答就較快。 Web服務(wù)器,瀏覽器,代理服務(wù)器 瀏覽器發(fā)送請(qǐng)求,Web服務(wù)器收到請(qǐng)求后給予響應(yīng),做出處理,并且發(fā)送處理結(jié)果Response給瀏覽器,瀏覽器收到后再頁面中展示出來。如果檢測(cè)出收到的結(jié)果中包含CSS,圖片等文件,可能需要多次請(qǐng)求瀏覽器才能在網(wǎng)頁上完整展現(xiàn)出來。 我們的Request 有可能是經(jīng)過了代理服務(wù)器,最后才到達(dá)Web服務(wù)器的。 過程如下圖所示
代理服務(wù)器就是網(wǎng)絡(luò)信息的中轉(zhuǎn)站,有什么功能呢? 1. 提高訪問速度, 大多數(shù)的代理服務(wù)器都有緩存功能。 2. 突破限制, 也就是FQ了 3. 隱藏身份。 URL詳解 URL(Uniform Resource Locator) 地址用于描述一個(gè)網(wǎng)絡(luò)上的資源, 基本格式如下 schema://host[:port#]/path/…/[?query-string][#anchor] scheme 指定低層使用的協(xié)議(例如:http, https, ftp) host HTTP服務(wù)器的ip地址或者域名 port# HTTP服務(wù)器的默認(rèn)端口是80,這種情況下端口號(hào)可以省略。如果使用了別的端口,必須指明,例如 http://www.cnblogs.com:8080/ path 訪問資源的路徑 query-string 發(fā)送給http服務(wù)器的數(shù)據(jù) anchor- 錨
URL 的一個(gè)例子 http://www.mywebsite.com/sj/test/test.aspx?name=sviergn&x=true#stuff Schema: http host: www.mywebsite.com path: /sj/test/test.aspx Query String: name=sviergn&x=true Anchor: stuff HTTP協(xié)議是無狀態(tài)的 http協(xié)議是無狀態(tài)的,同一個(gè)客戶端的這次請(qǐng)求和上次請(qǐng)求是沒有對(duì)應(yīng)關(guān)系,對(duì)http服務(wù)器來說,它并不知道這兩個(gè)請(qǐng)求來自同一個(gè)客戶端。 為了解決這個(gè)問題, Web程序引入了Cookie機(jī)制來維護(hù)狀態(tài) 打開一個(gè)網(wǎng)頁需要瀏覽器發(fā)送很多次Request 1. 當(dāng)你在瀏覽器輸入U(xiǎn)RL http://www.cnblogs.com 的時(shí)候,瀏覽器發(fā)送一個(gè)Request去獲取 http://www.cnblogs.com 的html. 服務(wù)器把Response發(fā)送回給瀏覽器. 2. 瀏覽器分析Response中的 HTML,發(fā)現(xiàn)其中引用了很多其他文件,比如圖片,CSS文件,JS文件。 3. 瀏覽器會(huì)自動(dòng)再次發(fā)送Request去獲取圖片,CSS文件,或者JS文件。 4. 等所有的文件都下載成功后。 網(wǎng)頁就被顯示出來了。 使用fiddler捕捉瀏覽器請(qǐng)求 Get和Post方法的區(qū)別 Http協(xié)議定義了很多與服務(wù)器交互的方法,最基本的有4種,分別是GET,POST,PUT,DELETE. 一個(gè)URL地址用于描述一個(gè)網(wǎng)絡(luò)上的資源,而HTTP中的GET, POST, PUT, DELETE就對(duì)應(yīng)著對(duì)這個(gè)資源的查,改,增,刪4個(gè)操作。 我們最常見的就是GET和POST了。GET一般用于獲取/查詢資源信息,而POST一般用于更新資源信息. HTTP請(qǐng)求方法
我們看看GET和POST的區(qū)別
GET提交的數(shù)據(jù)會(huì)放在URL之后,以?分割URL和傳輸數(shù)據(jù),參數(shù)之間以&相連,如EditPosts.aspx?name=test1&id=123456. POST方法是把提交的數(shù)據(jù)放在HTTP包的Body中.
GET提交的數(shù)據(jù)大小有限制(因?yàn)闉g覽器對(duì)URL的長度有限制),而POST方法提交的數(shù)據(jù)沒有限制.
GET方式需要使用Request.QueryString來取得變量的值,而POST方式通過Request.Form來獲取變量的值。
GET方式提交數(shù)據(jù),會(huì)帶來安全問題,比如一個(gè)登錄頁面,通過GET方式提交數(shù)據(jù)時(shí),用戶名和密碼將出現(xiàn)在URL上,如果頁面可以被緩存或者其他人可以訪問這臺(tái)機(jī)器,就可以從歷史記錄獲得該用戶的賬號(hào)和密碼.
新聞熱點(diǎn)
疑難解答
圖片精選