1. 程式人生 > >web前端開發必知的HTTP通訊過程

web前端開發必知的HTTP通訊過程

在做web前端開發時,我們必須要知道客戶端和服務端是如何通訊的,通俗簡單點就是  請求(客戶端) > 響應 (服務端)的過程,可是客戶端又是如何向服務端如何請求的呢?而服務端又是如何響應的呢,響應的資訊又是不是我們想要的呢?帶著問題往下看吧。

HTTP(HyperText Transfer Protocol)是一套計算機通過網路進行通訊的規則。計算機專家設計出HTTP,使HTTP客戶(如Web瀏覽器)能夠從HTTP伺服器(Web伺服器)請求資訊和服務,HTTP協議目前的版本是1.1.HTTP是一種無狀態的協議,無狀態是指Web瀏覽器和Web伺服器之間不需要建立持久的連線,這意味著當一個客戶端向伺服器端發出請求,然後Web伺服器返回響應(response),連線就被關閉了,在伺服器端不保留連線的有關資訊.HTTP遵循請求(Request)/應答(Response)模型。Web瀏覽器向Web伺服器傳送請求,Web伺服器處理請求並返回適當的應答。所有HTTP連線都被構造成一套請求和應答。

HTTP使用內容型別,是指Web伺服器向Web瀏覽器返回的檔案都有與之相關的型別。所有這些型別在MIMEInternet郵件協議上模型化,即Web伺服器告訴Web瀏覽器該檔案所具有的種類,是HTML文件、GIF格式影象、聲音檔案還是獨立的應用程式。大多數Web瀏覽器都擁有一系列的可配置的輔助應用程式,它們告訴瀏覽器應該如何處理Web伺服器傳送過來的各種內容型別。

HTTP通訊機制是在一次完整的HTTP通訊過程中,Web瀏覽器與Web伺服器之間將完成下列7個步驟:

(1) 建立TCP連線

在HTTP工作開始之前,Web瀏覽器首先要通過網路與Web伺服器建立連線,該連線是通過TCP來完成的,該協議與IP協議共同構建Internet,即著名的TCP/IP協議族,因此Internet又被稱作是TCP/IP網路。HTTP是比TCP更高層次的應用層協議,根據規則,只有低層協議建立之後才能,才能進行更層協議的連線,因此,首先要建立TCP連線,一般TCP連線的埠號是80

(2) Web瀏覽器向Web伺服器傳送請求命令

一旦建立了TCP連線,Web瀏覽器就會向Web伺服器傳送請求命令

例如:GET/sample/hello.jsp HTTP/1.1

(3) Web瀏覽器傳送請求頭資訊

瀏覽器傳送其請求命令之後,還要以頭資訊的形式向Web伺服器傳送一些別的資訊,之後瀏覽器傳送了一空白行來通知伺服器,它已經結束了該頭資訊的傳送。

(4) Web伺服器應答

客戶機向伺服器發出請求後,伺服器會客戶機回送應答,

HTTP/1.1 200 OK

應答的第一部分是協議的版本號和應答狀態碼

(5) Web伺服器傳送應答頭資訊

正如客戶端會隨同請求傳送關於自身的資訊一樣,伺服器也會隨同應答向用戶傳送關於它自己的資料及被請求的文件。

(6) Web伺服器向瀏覽器傳送資料

Web伺服器向瀏覽器傳送頭資訊後,它會發送一個空白行來表示頭資訊的傳送到此為結束,接著,它就以Content-Type應答頭資訊所描述的格式傳送使用者所請求的實際資料

(7) Web伺服器關閉TCP連線

一般情況下,一旦Web伺服器向瀏覽器傳送了請求資料,它就要關閉TCP連線,然後如果瀏覽器或者伺服器在其頭資訊加入了這行程式碼

Connection:keep-alive

TCP連線在傳送後將仍然保持開啟狀態,於是,瀏覽器可以繼續通過相同的連線傳送請求。保持連線節省了為每個請求建立新連線所需的時間,還節約了網路頻寬。

HTTP請求格式

當瀏覽器向Web伺服器發出請求時,它向伺服器傳遞了一個數據塊,也就是請求資訊,HTTP請求資訊由3部分組成:

l 請求方法URI協議/版本

l 請求頭(Request Header)

l 請求正文

下面是一個HTTP請求的例子:

GET/sample.jspHTTP/1.1

Accept:image/gif.image/jpeg,/

Accept-Language:zh-cn

Connection:Keep-Alive

Host:localhost

User-Agent:Mozila/4.0(compatible;MSIE5.01;Window NT5.0)

Accept-Encoding:gzip,deflate

username=jinqiao&password=1234

(1) 請求方法URI協議/版本

請求的第一行是“方法URL議/版本”:GET/sample.jsp HTTP/1.1

以上程式碼中“GET”代表請求方法,“/sample.jsp”表示URI,“HTTP/1.1代表協議和協議的版本。

根據HTTP標準,HTTP請求可以使用多種請求方法。例如:HTTP1.1支援7種請求方法:GET、POST、HEAD、OPTIONS、PUT、DELETE和TARCE。在Internet應用中,最常用的方法是GET和POST。

URL完整地指定了要訪問的網路資源,通常只要給出相對於伺服器的根目錄的相對目錄即可,因此總是以“/”開頭,最後,協議版本聲明瞭通訊過程中使用HTTP的版本。

(2)請求頭(Request Header)

請求頭包含許多有關的客戶端環境和請求正文的有用資訊。例如,請求頭可以宣告瀏覽器所用的語言,請求正文的長度等。

Accept:image/gif.image/jpeg./

Accept-Language:zh-cn

Connection:Keep-Alive

Host:localhost

User-Agent:Mozila/4.0(compatible:MSIE5.01:Windows NT5.0)

Accept-Encoding:gzip,deflate.

(3)請求正文

請求頭和請求正文之間是一個空行,這個行非常重要,它表示請求頭已經結束,接下來的是請求正文。請求正文中可以包含客戶提交的查詢字串資訊:

username=jinqiao&password=1234

在以上的例子的HTTP請求中,請求的正文只有一行內容。當然,在實際應用中,HTTP請求正文可以包含更多的內容。

HTTP請求方法我這裡只討論GET方法與POST方法

l GET方法

GET方法是預設的HTTP請求方法,我們日常用GET方法來提交表單資料,然而用GET方法提交的表單資料只經過了簡單的編碼,同時它將作為URL的一部分向Web伺服器傳送,因此,如果使用GET方法來提交表單資料就存在著安全隱患上。例如

Http://127.0.0.1/login.jsp?Name=zhangshi&Age=30&Submit=%cc%E+%BD%BB

從上面的URL請求中,很容易就可以辯認出表單提交的內容。(?之後的內容)另外由於GET方法提交的資料是作為URL請求的一部分所以提交的資料量不能太大

l POST方法

POST方法是GET方法的一個替代方法,它主要是向Web伺服器提交表單資料,尤其是大批量的資料。POST方法克服了GET方法的一些缺點。通過POST方法提交表單資料時,資料不是作為URL請求的一部分而是作為標準資料傳送給Web伺服器,這就克服了GET方法中的資訊無法保密和資料量太小的缺點。因此,出於安全的考慮以及對使用者隱私的尊重,通常表單提交時採用POST方法。

從程式設計的角度來講,如果使用者通過GET方法提交資料,則資料存放在QUERY_STRING環境變數中,而POST方法提交的資料則可以從標準輸入流中獲取。

HTTP應答與HTTP請求相似,HTTP響應也由3個部分構成,分別是:

l 協議狀態版本程式碼描述

l 響應頭(Response Header)

l 響應正文

下面是一個HTTP響應的例子:

HTTP/1.1 200 OK

Server:Apache Tomcat/5.0.12

Date:Mon,6Oct2003 13:23:42 GMT

Content-Length:112

相關推薦

web前端開發HTTP通訊過程

在做web前端開發時,我們必須要知道客戶端和服務端是如何通訊的,通俗簡單點就是  請求(客戶端) > 響應 (服務端)的過程,可是客戶端又是如何向服務端如何請求的呢?而服務端又是如何響應的呢,響應的資訊又是不是我們想要的呢?帶著問題往下看吧。 HTTP(HyperTe

web前端入門的10個技術

如何使用 web前端 職稱 htm 10個 教程 需要 can 進行 隨著HTML5的發展和普及,了解HTML5將成為Web開發人員的必修課。如何把網頁做得更美觀,對用戶更有吸引力,不僅是企業對前端開發人員要求,更是一個合格的web前端工程師的自我修行。今天小編就跟大家分享

Web前端開發者的9個CSS屬性

1.圓角效果 如今的Web設計在不斷跟進最新的開發技術,紛紛採用HTML5來開發多樣性的Web應用。HTML5的優勢之一,就是之前必須用圖片實現的元素,現在可以用程式碼來實現。“border-radi

前端開發:瀏覽器相容(一)——IE雙邊距

一、  不同瀏覽器的標籤預設的padding,margin不同解決:css裡*{margin:0;padding:0;}備註:這個是最常見的也是最易解決的一個瀏覽器相容性問題,幾乎所有的css檔案開頭都

Web 前端開發者的9 個 CSS 屬性

1.  圓角效果 如今的Web設計在不斷跟進最新的開發技術,紛紛採用HTML5來開發多樣性的Web應用。HTML5的優勢之一,就是之前必須用圖片實現的元素,現在可以用程式碼來實現。“border-radius”是實現這一功能的一個重要的屬性,可以用來直接定義HTML元素

web前端開發過程遇到的問題及解決方式(一)

樣式優先級 語句 前端 port web前端開發 css樣式 重復 fun clas 1. CSS樣式優先級問題 1 <style> 2 3 .className input(可換其他元素){ 4 5 type:val !importa

web前端開發溫故而新(二)

b前端開發 溫故而知新 行數 row 溫故 tab padding ram 列合並 2.0:帶機構的的表格分為<thead></thead> <tbody></tbody> </tfoot><

web前端開發溫故而新(三)

隱藏 area for value 隱藏域 span selected orm web前端開發 3.1:input屬性hidden隱藏域 例:<input type="hidden" name="hidden" value="這是一個隱藏域" /> 3.2:

web前端開發初學者看的學習路線圖課程內容分享

隨著web前端需求量的日益增加,企業對前端人員的技能要求也越來越高,我們如何能學到滿足企業的web前端技能,向著高薪前進,那你就的瞭解企業需要的人才需求,還的提升自身的技術能力,那麼想從事web前端行業,web前端開發主要學什麼課程呢? 前端是一門銜接UI和後臺開發的職位,web前端工程師課程要完全覆蓋這些

WEB前端開發初學者看的學習路線(附思維導圖)

很多同學想學習WEB前端開發,雖然網際網路有很多的教程、網站、書籍,可是卻又不知從何開始如何選取。看完網友高等遊民白烏鴉無私分享的原標題為《寫給同事的前端學習路線》這篇文章,相信你會有所收穫。 前端開發入門學習有:HTML、CSS、JavaScript(簡稱JS

web前端開發Http協議

超文字傳送協議 (HTTP-Hypertext transfer protocol) 定義了瀏覽器(即全球資訊網客戶程序)怎樣向全球資訊網伺服器請求全球資訊網文件,以及伺服器怎樣把文件傳送給瀏覽器。從層次的角度看,HTTP是面向(transaction-orie

Web開發的八種隔離級別

ACID性質是資料庫理論中的奠基石,它定義了一個理論上可靠資料庫所必須具備的四個性質:原子性,一致性,隔離性和永續性。雖然這四個性質都很重要,但是隔離性最為靈活。大部分資料庫都提供了一些可供選擇的隔離級別,且現在許多庫

初學Web前端開發,學會這幾個殺技,薪資爆表!

曾經的我怎麼也想不到,web前端開領域能發展到今天的樣子,但是對於很多想轉行學習的初學者,你首先需要先掌握必備的基礎知識,以及獨立

web端設計和web前端開發 的區別

mage ima cnblogs 前端開發 src web前端開發 log alt .cn web端設計和web前端開發 的區別

移動前端開發Web 前端開發的區別

平臺 所有 ref 答案 關聯 工程師 禁止 全屏 分享 pc,我們需要考慮什麽呢?有點開發經驗的同學都知道,ie6-11,firefox,chrome,safari都得兼容的吧。哪個都夠你吃一壺的,無論是css還是js。mobile的網頁開發,我們需要考慮什麽呢?就目前

web前端開發,哪個機構好呢

是否 高效 規範 隨著 深入 十分 目前 前端工程師 深入淺出 學習web前端開發已然成為一種潮流,甚至有很多做後臺的轉行來學。學習web開發,選擇一家好的web前端開發機構至關重要。但是,現在各類的web前端開發機構如雨後春筍般迅速崛起,這也增加了我們的選擇難度。那麽,學

Web前端開發實戰4:導航菜單(一)

pan 解決 博文 xmlns 背景圖 20px mar 水平 經典 在前面的博文中我們提到橫向一級菜單,這裏我們來看看導航菜單。導航菜單種類非常多,可是制作原理都是大同 小異的。這裏看的比二級下拉式菜單還簡單。來看一些站點上的導航菜單:

web前端開發前景

前途 註意 在家 避免 的人 其他 而不是 來源 模仿 老是有人喜歡討論說做前端開發有前途沒有,前幾天還有一個剛畢業的大學生問我。說實話我也不知道怎麽樣,但是我很喜歡做前端開發。要說做業務是挑戰自己,做前端開發也是很挑戰自己的,因為信息更新速度很快,要斷的學習,去研究。下面

Web前端開發,需要熟悉計算機專業課嗎?

Web前端需要熟悉大學裏[高大上]計算機專業課嗎? 這裏說的『高大上』的專業課,主要指算法、數據結構、操作系統、編譯原理、線性結構、離散數學等等。 對於大學不是計算機專業,但以後想要從事前端開發工作的同學來說,這些『高大上』的計算機專業課是否有必要花時間去了解呢? 以下內容整

愛創課堂----Web前端開發的工資如何?都要學習哪些技術?

node 互聯網 前端 今天來和大家講講Web前端開發需要學習什麽?前端開發又需要用到哪些開發工具?然後分享一些前端開發的免費課程給大家,然後也簡單的和大家介紹下前端開發的前景和薪水工資情況,下面就簡單和大家介紹一下。1. Web前端的職能Web前端工程師其實在不同的公司,有不同的職能,但是稱呼都