HTTP協議請求 轉HTTP協議請求

來源:互聯網
上載者:User
HTTP協議請求

  前言:這幾天在學習HTTP協議的請求響應等知識點,使我也慢慢地瞭解了HTTP協議,以前寫網站的時候根本不考慮這些,也就是所謂的”托控制項”,這幾天學習了這些知識點感覺真的是一個提升,由於我比較笨,所以寫個筆記記錄一下,要是以後忘了可以再研究研究。順便也共用一下,可能有錯誤,希望大家能夠指出來。

1. 什麼是瀏覽器? 什麼是伺服器?

  (1)我們一直在瀏覽網頁,比如我們去部落格園www.cnblogs.com,那麼我們知道當我們輸入這段網址的時候我們的瀏覽器以及伺服器做了什麼嗎?下面簡單的看一下這張圖:

  

  (2)當我們在瀏覽器中輸入:http://127.0.0.1:8080/proscenium/的時候,瀏覽器請求後台伺服器,後台伺服器會返回給我們一個網頁,那麼後台伺服器到底幹了什麼呢?我們可以使用Chrome,IE內建的開發人員人員工具,或者DebugBur,Fiddler,和HttpWatch查看,下面就是我查看的網站的訪問記錄    

  註解:當我們輸入網址斷行符號的時候,瀏覽器自動的將我們請求的地址封裝成了HTTP報文,HTTP報文就是一串字串,而後通過Socket發送到伺服器對應的IP和連接埠上去,請求的報文格式如下:

  GET /proscenium/ HTTP/1.1

  Host: localhost:8080

  Connection: keep-alive

  Cache-Control: max-age=0

  User-Agent: Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.1 (KHTML, like Gecko) Chrome/21.0.1180.89 Safari/537.1

  Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 Accept-Encoding: gzip,deflate,sdch

  Accept-Language: zh-CN,zh;q=0.8 Accept-Charset: GBK,utf-8;q=0.7,*;q=0.3 Cookie: ASP.NET_SessionId=myc2esb4m0io50gf0t52jvtl

  將上面的HTTP報文發送給伺服器,伺服器來解析這些HTTP協議,然後將解析出來的頁面封裝成一個響應的報文,發送回給瀏覽器,瀏覽器將會解析伺服器發送回來的這個響應的報文,顯示出相應的資訊來

  HTTP/1.1 200 OK

  Cache-Control: private

  Content-Type: text/html; charset=utf-8

  Content-Encoding: gzip

  Vary: Accept-Encoding

  Server: Microsoft-IIS/8.0

  X-AspNet-Version: 4.0.30319

  X-Powered-By: ASP.NET

  Date: Sat, 27 Oct 2012 11:46:29 GMT

  Content-Length: 52728

  (3)最後使用圖形來說明上面的這個請求響應的過程

  

  (4)解析伺服器發回來的資料的HTML頁面的時候,瀏覽器是一行一行的解析的,當遇到添加的Jquery的引入檔案的時候,就會在發送一個請求解析JS檔案,解析到CSS和圖片等都一樣的執行格式,所以瀏覽器是一邊解析一邊執行的一個過程,當然裡面還是有特殊的一些控制項(Table)。

  (5) 在.NET平台下面我們經常使用的是IIS管理器,我們可以將我們的網站寄宿到IIS中,我們就可以查看我們的網站了。

  (6)瀏覽器和伺服器語言

       1)瀏覽器只負責解釋執行HTML+CSS+Javascript代碼

       2)伺服器可執行伺服器端語言,.net,Java分別由不同的運行環境執行代碼(FrameWork,JVM)

  (7)靜態頁面和動態網頁面的區別?

       1) 在伺服器就相當於直接讀取檔案字串然後返回用戶端瀏覽器;(任何時候訪問看到的都是一樣的介面)。

       2) 在伺服器是先交給某語言環境虛擬機器編譯運行,按照文法產生代碼返回用戶端瀏覽器。(不同條件和時候訪問看到的都介面也不同)。

2. HTTP協議

  (1) Web開發是和Http協議打交道的,必須瞭解HTTP協議,HTTP協議版本:HTTP/0.9,HTTP/1.0,HTTP/1.1。

  (2) HTTP協議的幾個概念

    1)串連(Connection),瀏覽器和伺服器之間傳輸資料的通道,一般請求完畢就關閉,HTTP不保持串連,不保持串連會降低處理速度(因為建立連線速度很慢),保持串連的話就會降低伺服器的處理的用戶端請求數,而不保持串連伺服器可以處理更多的請求

    2)請求(Request),瀏覽器向伺服器發送”什麼什麼”的訊息,包含請求的類型,請求的資料,瀏覽器的資訊(語言,瀏覽器版本等資訊)。

    3)響應(Response),伺服器對瀏覽器的請求返回資料,包含是否成功,狀態代碼等資訊。

  (3) HTTP協議訊息結構圖

  

  (4 HTTP協議-請求報文格式

  

    

  (5)HTTP協議-請求報文詳解

    1) 用httpwatch查看訪問一個網站的響應情況。敲入一個網址後,瀏覽器向伺服器發出請求。頁面中的圖片、js、css在單獨的請求中

    2) Host:請求的發送給那一個伺服器

    3) Accept-Encoding gzip,deflate表示瀏覽器支援gzip,deflate兩種壓縮演算法

    4) Accept-Language zh-cn表示瀏覽器支援的語言,很多進入後自動就是中文介面的國際網站就是通過讀取這個頭的值實現的。

    5) Connection Keep-Alive。一般情況下,一旦web伺服器向瀏覽器發送了請求資料,他就要關閉TCP串連,然後如果瀏覽器或者伺服器在其頭資訊加入了Connection:keep-alive,則TCP串連在發送後仍將保持開啟狀態,於是,瀏覽器可以繼續通過相同的串連發送請求,保持串連節省了為每個請求建立新串連所需要的時間,還節約了網路頻寬。

    6) Cookie是瀏覽器相伺服器發送和當前網站關聯的Cookie,這樣在伺服器端也能讀取到瀏覽器端的Cookie了。

    7) User-Agent為瀏覽器的版本資訊,通過這個資訊可以讀取瀏覽器是IE還是FireFox,支援的外掛程式和.net版本等資訊

    8)Referer:表示請求的地址,也就是從那個頁面來的。

    9)Content-Length:表示下面的請求體的長度

  (6) HTTP協議-相應報文格式

  

    

  (7) HTTP協議-相應報文詳解

    1)  瀏覽器相伺服器發出請求,伺服器處理可能成功,可能是失敗,可能沒有許可權訪問等原因,伺服器會通過相應嗎來告訴瀏覽器處理結果

      1)"200":表示執行成功,返回OK。

      2)"302":Found重新導向。

      3)"400":Bad Rquest錯誤請求,發出錯誤的不符合HTTP協議的請求。

      4)"403":Forbidden禁止。

      5)"404":Not Found未找到,示範訪問一個不存在的頁面看報文。

      6)"500":Internal Server Error伺服器內部錯誤,示範頁面拋出異常

      7)"503":Service Unavailable。一般是訪問人數過多,可以用12306網站實驗一樣,可能會得到這個結果。

    2)  200段是成功,300段需要對請求做進一步的處理,400段表示用戶端請求錯誤,500段是伺服器的錯誤。

    3)  Server:Cassini/3.5.0.5表示伺服器的類型

    4)  Content-Type:text/html;charset=utf-8表示返回資料的類型

  5)  伺服器通過Content-Type告訴用戶端響應的資料的類型,這樣瀏覽器就根據返回資料的類型來進行不同的處理,如果是圖片類型的顯示,如果是文本類型就直接顯示內容,如果用HTML類型就用瀏覽器顯示內容,如果是下載類型就彈出下載工具等。

  6)常用Content-Type:text/HTML、image/GIF、image/JPEG、text/plain、text/javascript、application/x-excel 、application/octet-stream(二進位檔案)

  7) Content-Length: 19944表示響應報文體的位元組長度,報文頭只是描述,返回的具體資料(比如HTML文本、圖片資料等)在兩個斷行符號之後的內容中。

  8) HTTP協議的其他的一些介紹

    1)HTTP是無狀態的,不會記得“上一個請求是什麼”,所以哪怕是同一個頁面中的JS,CSS,JPG也都要重複的提交Accept-Language,Accept-Encoding,Cookie等。

    2)網頁中如果有圖片,CSS,JS等外部檔案的話,圖片、CSS、JS都在單獨的請求中,也就是並不是頁面的使所有內容都在一個請求中完成,而是每個資源一個請求。

    3)一般情況下,只有瀏覽器請求伺服器端,伺服器端才會給瀏覽器響應資料,伺服器不會主動向瀏覽器推送資料,這樣是安全考慮,也是提高伺服器的效能考慮,如果要伺服器向瀏覽器推送資料,這需要使用ServerPush(Ajax隔一段時間到伺服器請求最新的資料)等額外的技術。

    4)HTTP是“要求-回應”的工作模式

  (9)類比HTTP協議的過程。

  1)這個小項目實現的功能是:圖形展示

  

  2)實現的效果是:

  

  

  3)代碼是:http://files.cnblogs.com/hanyinglong/AnalogIISDemo.zip

  前言:這幾天在學習HTTP協議的請求響應等知識點,使我也慢慢地瞭解了HTTP協議,以前寫網站的時候根本不考慮這些,也就是所謂的”托控制項”,這幾天學習了這些知識點感覺真的是一個提升,由於我比較笨,所以寫個筆記記錄一下,要是以後忘了可以再研究研究。順便也共用一下,可能有錯誤,希望大家能夠指出來。

1. 什麼是瀏覽器? 什麼是伺服器?

  (1)我們一直在瀏覽網頁,比如我們去部落格園www.cnblogs.com,那麼我們知道當我們輸入這段網址的時候我們的瀏覽器以及伺服器做了什麼嗎?下面簡單的看一下這張圖:

  

  (2)當我們在瀏覽器中輸入:http://127.0.0.1:8080/proscenium/的時候,瀏覽器請求後台伺服器,後台伺服器會返回給我們一個網頁,那麼後台伺服器到底幹了什麼呢?我們可以使用Chrome,IE內建的開發人員人員工具,或者DebugBur,Fiddler,和HttpWatch查看,下面就是我查看的網站的訪問記錄    

  註解:當我們輸入網址斷行符號的時候,瀏覽器自動的將我們請求的地址封裝成了HTTP報文,HTTP報文就是一串字串,而後通過Socket發送到伺服器對應的IP和連接埠上去,請求的報文格式如下:

  GET /proscenium/ HTTP/1.1

  Host: localhost:8080

  Connection: keep-alive

  Cache-Control: max-age=0

  User-Agent: Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.1 (KHTML, like Gecko) Chrome/21.0.1180.89 Safari/537.1

  Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 Accept-Encoding: gzip,deflate,sdch

  Accept-Language: zh-CN,zh;q=0.8 Accept-Charset: GBK,utf-8;q=0.7,*;q=0.3 Cookie: ASP.NET_SessionId=myc2esb4m0io50gf0t52jvtl

  將上面的HTTP報文發送給伺服器,伺服器來解析這些HTTP協議,然後將解析出來的頁面封裝成一個響應的報文,發送回給瀏覽器,瀏覽器將會解析伺服器發送回來的這個響應的報文,顯示出相應的資訊來

  HTTP/1.1 200 OK

  Cache-Control: private

  Content-Type: text/html; charset=utf-8

  Content-Encoding: gzip

  Vary: Accept-Encoding

  Server: Microsoft-IIS/8.0

  X-AspNet-Version: 4.0.30319

  X-Powered-By: ASP.NET

  Date: Sat, 27 Oct 2012 11:46:29 GMT

  Content-Length: 52728

  (3)最後使用圖形來說明上面的這個請求響應的過程

  

  (4)解析伺服器發回來的資料的HTML頁面的時候,瀏覽器是一行一行的解析的,當遇到添加的Jquery的引入檔案的時候,就會在發送一個請求解析JS檔案,解析到CSS和圖片等都一樣的執行格式,所以瀏覽器是一邊解析一邊執行的一個過程,當然裡面還是有特殊的一些控制項(Table)。

  (5) 在.NET平台下面我們經常使用的是IIS管理器,我們可以將我們的網站寄宿到IIS中,我們就可以查看我們的網站了。

  (6)瀏覽器和伺服器語言

       1)瀏覽器只負責解釋執行HTML+CSS+Javascript代碼

       2)伺服器可執行伺服器端語言,.net,Java分別由不同的運行環境執行代碼(FrameWork,JVM)

  (7)靜態頁面和動態網頁面的區別?

       1) 在伺服器就相當於直接讀取檔案字串然後返回用戶端瀏覽器;(任何時候訪問看到的都是一樣的介面)。

       2) 在伺服器是先交給某語言環境虛擬機器編譯運行,按照文法產生代碼返回用戶端瀏覽器。(不同條件和時候訪問看到的都介面也不同)。

2. HTTP協議

  (1) Web開發是和Http協議打交道的,必須瞭解HTTP協議,HTTP協議版本:HTTP/0.9,HTTP/1.0,HTTP/1.1。

  (2) HTTP協議的幾個概念

    1)串連(Connection),瀏覽器和伺服器之間傳輸資料的通道,一般請求完畢就關閉,HTTP不保持串連,不保持串連會降低處理速度(因為建立連線速度很慢),保持串連的話就會降低伺服器的處理的用戶端請求數,而不保持串連伺服器可以處理更多的請求

    2)請求(Request),瀏覽器向伺服器發送”什麼什麼”的訊息,包含請求的類型,請求的資料,瀏覽器的資訊(語言,瀏覽器版本等資訊)。

    3)響應(Response),伺服器對瀏覽器的請求返回資料,包含是否成功,狀態代碼等資訊。

  (3) HTTP協議訊息結構圖

  

  (4 HTTP協議-請求報文格式

  

    

  (5)HTTP協議-請求報文詳解

    1) 用httpwatch查看訪問一個網站的響應情況。敲入一個網址後,瀏覽器向伺服器發出請求。頁面中的圖片、js、css在單獨的請求中

    2) Host:請求的發送給那一個伺服器

    3) Accept-Encoding gzip,deflate表示瀏覽器支援gzip,deflate兩種壓縮演算法

    4) Accept-Language zh-cn表示瀏覽器支援的語言,很多進入後自動就是中文介面的國際網站就是通過讀取這個頭的值實現的。

    5) Connection Keep-Alive。一般情況下,一旦web伺服器向瀏覽器發送了請求資料,他就要關閉TCP串連,然後如果瀏覽器或者伺服器在其頭資訊加入了Connection:keep-alive,則TCP串連在發送後仍將保持開啟狀態,於是,瀏覽器可以繼續通過相同的串連發送請求,保持串連節省了為每個請求建立新串連所需要的時間,還節約了網路頻寬。

    6) Cookie是瀏覽器相伺服器發送和當前網站關聯的Cookie,這樣在伺服器端也能讀取到瀏覽器端的Cookie了。

    7) User-Agent為瀏覽器的版本資訊,通過這個資訊可以讀取瀏覽器是IE還是FireFox,支援的外掛程式和.net版本等資訊

    8)Referer:表示請求的地址,也就是從那個頁面來的。

    9)Content-Length:表示下面的請求體的長度

  (6) HTTP協議-相應報文格式

  

    

  (7) HTTP協議-相應報文詳解

    1)  瀏覽器相伺服器發出請求,伺服器處理可能成功,可能是失敗,可能沒有許可權訪問等原因,伺服器會通過相應嗎來告訴瀏覽器處理結果

      1)"200":表示執行成功,返回OK。

      2)"302":Found重新導向。

      3)"400":Bad Rquest錯誤請求,發出錯誤的不符合HTTP協議的請求。

      4)"403":Forbidden禁止。

      5)"404":Not Found未找到,示範訪問一個不存在的頁面看報文。

      6)"500":Internal Server Error伺服器內部錯誤,示範頁面拋出異常

      7)"503":Service Unavailable。一般是訪問人數過多,可以用12306網站實驗一樣,可能會得到這個結果。

    2)  200段是成功,300段需要對請求做進一步的處理,400段表示用戶端請求錯誤,500段是伺服器的錯誤。

    3)  Server:Cassini/3.5.0.5表示伺服器的類型

    4)  Content-Type:text/html;charset=utf-8表示返回資料的類型

  5)  伺服器通過Content-Type告訴用戶端響應的資料的類型,這樣瀏覽器就根據返回資料的類型來進行不同的處理,如果是圖片類型的顯示,如果是文本類型就直接顯示內容,如果用HTML類型就用瀏覽器顯示內容,如果是下載類型就彈出下載工具等。

  6)常用Content-Type:text/HTML、image/GIF、image/JPEG、text/plain、text/javascript、application/x-excel 、application/octet-stream(二進位檔案)

  7) Content-Length: 19944表示響應報文體的位元組長度,報文頭只是描述,返回的具體資料(比如HTML文本、圖片資料等)在兩個斷行符號之後的內容中。

  8) HTTP協議的其他的一些介紹

    1)HTTP是無狀態的,不會記得“上一個請求是什麼”,所以哪怕是同一個頁面中的JS,CSS,JPG也都要重複的提交Accept-Language,Accept-Encoding,Cookie等。

    2)網頁中如果有圖片,CSS,JS等外部檔案的話,圖片、CSS、JS都在單獨的請求中,也就是並不是頁面的使所有內容都在一個請求中完成,而是每個資源一個請求。

    3)一般情況下,只有瀏覽器請求伺服器端,伺服器端才會給瀏覽器響應資料,伺服器不會主動向瀏覽器推送資料,這樣是安全考慮,也是提高伺服器的效能考慮,如果要伺服器向瀏覽器推送資料,這需要使用ServerPush(Ajax隔一段時間到伺服器請求最新的資料)等額外的技術。

    4)HTTP是“要求-回應”的工作模式

  (9)類比HTTP協議的過程。

  1)這個小項目實現的功能是:圖形展示

  

  2)實現的效果是:

  

  

  3)代碼是:http://files.cnblogs.com/hanyinglong/AnalogIISDemo.zip

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.