http請求方式和狀態管理

2022-07-19 06:21:12 字數 2273 閱讀 5399

1、  http協議

internet的基本協議是tcp/ip協議(傳輸控制協議和網際協議),目前廣泛使用的 ftp、http(超文字傳輸協議)、archie gopher都是建立在tcp/ip上面的應用層協議,不同的協議對應不同的應用。而http協議是web應用所使用的主要協議。

http協議是基於請求響應模式的。客戶端向伺服器傳送乙個請求,請求頭包含請求的方法、 uri、協議版本、以及包含請求修飾符、客戶端資訊和內容的類似mime的訊息結果。伺服器則以乙個狀態行作為響應,相應的內容包括訊息協議的版本、成功 或者錯誤編碼加上包含伺服器資訊、實體元資訊以及可能的實體內容。

http是無狀態協議,依賴於瞬間或者近乎瞬間的請求處理。請求資訊被立即傳送,理想的情況是 沒有延時的進行敕處理,不過,延時還是客觀存在的。http有一種內建的機制,在訊息的傳遞時間上由一定的靈活性:超時機制。乙個超時就是客戶機等待請求 訊息的返回資訊的最長時間。

http的請求和響應訊息如果沒有傳送並傳遞成功的話,不儲存任何已傳遞的資訊。比如,單擊「提交」按鈕,如果表單沒有傳送出去,則瀏覽器將顯示錯誤資訊頁,並且返回空白表單。雖然沒有傳送成功,但是http不儲存表單資訊。

由於http協議的上述特點,通常,客戶端每次需要更新資訊都必須重新向伺服器發起請求,客戶端收到伺服器返回的資訊後再更新螢幕內容。

基於http協議的客戶端/伺服器請求響應機制的資訊交換過程包括四個步驟:

http的工作機制是請求訊息和響應訊息,最簡單的情況,乙個使用者輸入乙個站點位址,傳送乙個請求。之後,瀏覽器返回所請求的頁面,這個頁面可能是簡單的html頁面,也可能是動態編譯後的頁面。如果這個頁面有錯誤或者不存在,則web伺服器將傳送錯誤資訊頁面。

web伺服器傳送錯誤資訊頁是因為http沒有內建的處理機制,是無狀態的,傳輸協議不記憶從 一條請求訊息到另一條請求訊息的任何資訊。這個特點可以保證web的一致性。但是,使用者常常需要記憶一些設定內容或者瀏覽過程,這就需要在web頁面或者 url中攜帶各種引數及其值。http請求有多種樣式,其中常用的有post、get、head。

2、  get請求

get請求返回以url形式表示的資源,當使用者輸入乙個簡單的url 時,就是使用get請求。get請求可以傳送query string(就是在url後用?附加乙個引數列表),代表url編碼字串的實際意義。

3、  post請求

post請求則將表單體置入web伺服器中,傳送訊息到公告板、新聞組、郵件列表或者其他機構 中,或者為資料處理機制提供諸如提交表單後的結果等資料。post請求的功能由web伺服器決定,依賴於url所指向的應用程式。長期以來,在填好的表單 提交之後,單擊瀏覽器「後退」按鈕,表單內容是空白的,這避免了使用者由於疏忽兩次提交表單的可能。不過很多瀏覽器還是會自動儲存已經傳送過的表單資訊,單 擊瀏覽器「後退」按鈕也會看到剛剛提交的部分表單內容。

使用get和post提交表單的主要不同之處是get顯示追加了查詢字串的表單引數,post連同請求訊息體一起傳送表單引數。

4、head請求

除了伺服器禁止在響應中傳送訊息體外,head的傳送方式和get一致。head請求的 http頭所包含的資訊與get請求的響應中的資訊相同,可以使用head請求獲取沒有傳送訊息體而由該請求暗指的訊息的有關元資訊。也可以使用請求訊息 測試超文字連線的有效性、科訪問性以及最新變動。

5、  狀態管理

對於簡單的靜態html檔案來說,這種特性很是適用,但是對於那些需要多次提交親切才能完成的 web操作比如購物車來說,就成問題了。伺服器端web應用程式必須允許使用者通過多個步驟才能完整全部的物品採購。這種情況下,應用程式必須跟蹤由同乙個 瀏覽器發出的多個請求所提供的資訊,即記住使用者的交易狀態。

通常,採取兩種方法來解決這個問題。一是在每次應答中都返回完整的狀態,讓瀏覽器把它作為下一次請求的一部份再傳送回來。二是把狀態儲存在伺服器的某個地方,只傳送回乙個識別符號,瀏覽器在下次提交中再把這個識別符號傳送回來;這樣就可以定位儲存在伺服器上的狀態資訊了。

在這兩種方法中,資訊可以通過下列三種方法之一傳送給瀏覽器:作為cookie、作為隱藏域嵌入html表單中、附加在主體的url中(通常作為指向其他應用程式頁面的鏈結,即url重寫)。

cookie是伺服器在應答資訊中傳送給瀏覽器的名稱/值對。瀏覽器儲存這些cookie,保 存的期限由cookie的有效期屬性決定。當瀏覽器向伺服器傳送乙個請求時,它檢查cookie設定,並將它從同乙個伺服器收到的所有cookie都注入 請求資訊中。使用cookie是處理狀態問題的乙個簡單的方法,但不是所有的瀏覽器都支援,使用者也可能禁用cookie。

如果使用html表單中隱藏域來向瀏覽器傳送狀態資訊的話,當表單提交時,瀏覽器將以常規http引數的方式將這些資訊返回伺服器。當狀態資訊被注入url時,它將作為請求url的一部分被傳送到伺服器。

http狀態碼和請求狀態

0 請求未初始化,還沒有呼叫 open 1 請求已經建立,但是還沒有傳送,還沒有呼叫 send 2 請求已傳送,正在處理中 通常現在可以從響應中獲取內容頭 3 請求在處理中 通常響應中已有部分資料可用了,沒有全部完成。4 響應已完成 您可以獲取並使用伺服器的響應了。伺服器狀態碼 1xx 表示臨時響應...

HTTP請求方式

在前段時間的工作中,程式登入到門戶位址時,有時使用http的post方法,有時使用http的get方法,當時也不去理解這兩者的意思,只知道get方法可以將使用者的登入資訊和url組合在一起傳送到伺服器,進行使用者認證。今天看了下書,對這兩者有了進一步的理解。通常,http的請求方式有3種,分別是 p...

HTTP請求方式

我們熟知的http協議請求方式有三種,但實際上是有六種的,我在此一一闡述下。1.get 這種請求方式最為常見,客戶程式通過這種請求方式訪問伺服器上的乙個文件,並由伺服器把文件發給客戶程式 2.post 客戶程式可通過這種方式傳送大量資訊給伺服器,不僅包含要訪問的文件的uri,還包括大量的請求的請求正...