HTTP請求響應機制與響應狀態碼


轉載來源:http://blog.csdn.net/xyw591238/article/details/51907143

HTTP協議                                                

  Internate的基本協議是TCP/IP(傳輸控制協議和網際協議)。而目前使用的FTP,HTTP都是建立在TCP/IP上的應用層協議。不同的協議對應不同的應用。而HTTP協議是Web應用所使用的主要協議。 
  
  HTTP協議基於請求響應模式,客戶端向服務器發送一個請求,請求頭包含請求的方法,URI,協議版本以及包含請求修飾符,客戶端信息和內容的類似MIME的消息結果。服務器則以一個狀態行為作為響應,相應的內容包括消息協議的版本,成功或錯誤編碼加上包含服務器信息,實體元信息以及可能的實體內容。 

  HTTP協議是無狀態協議,依賴瞬間或者近乎瞬間的請求處理。請求信息被立即發送,理想的情況是沒有延遲地進行處理;不過,延遲還是客觀存在的。HTTP協議有一種內置機制,在消息的傳遞時間上有一定的靈活性:超時機制。一個超時就是客戶端等待請求消息返回信息的最長時間。 
HTTP協議的請求和響應消息如果沒有發送並傳遞成功的話,不保存任何已傳遞的信息。比如,單擊“提交”按鈕,如果表單沒有發出去,則瀏覽器將會顯示錯誤信息頁,並且返回空白表單。雖然沒有提交成功,但是HTTP不保存任何表單信息。 

  由於HTTP協議的上述特點,通常,客戶端每次需要更新信息都必須重新向服務器發起請求,客戶端接受到服務器端返回的信息后再刷新屏幕內容。 
  基於HTTP協議的客戶端/服務器請求響應機制的信息交換過程包含下面幾個步驟: 

1.建立連接:客戶端與服務器建立TCP連接 
2.發送請求:打開一個連接后,客戶端把請求信息發送到服務器的相應端口上,完成請求動作提交。 
3.發送響應:服務器在處理完客戶端請求之后,要向客戶端發送響應消息。 
4.關閉連接:客戶端和服務器端都可以關閉套接字來結束TCP/IP對話。 

  HTTP的工作機制就是請求消息和響應消息。最簡單的情況是一個用戶輸入一個站點地址,發送一個請求。之后,瀏覽器返回所請求的頁面,這個頁面可能是最簡單的HTML頁面,也可能是動態編譯后的頁面。如果這個頁面有錯或者不存在,則WEB服務器則將發送一個錯誤的信息頁面。 

WEB服務器發送錯誤信息頁是因為HTTP沒有內置的處理機制,是無狀態的,傳輸協議不記憶從一個請求消息到另一個請求消息的任何信息(備注:意思是說,當發送一個請求消息發生錯誤,由於HTTP是無狀態的,所以不能將這個發生錯誤的請求消息傳遞給另一個請求消息進行處理,也是請求消息不能轉彎,必須一次傳到並得到處理)  這個特點可以保證WEB的一致性。但是,用戶常常需要記憶一些設置內容或者瀏覽過程,這就需要在web頁面或者URL中攜帶各種參數及值。HTTP請求有多種樣式。其中常用的有GET,POST,HEAD請求。 //這3個請求暫時不提了

狀態管理                                                   

  正如前面所提到的,HTTP協議是無狀態的,不能保存每次提交的信息,即當服務器返回與請求相對應的應答之后,這次事務的所有信息就都丟掉了。如果用戶發來一個新的請求,服務器也無法知道它是否與上次的請求有聯系。 

  對於簡單的靜態HTML文件來說,這種特性是很適用,但是對於那些需要多次提交請求才能完成的WEB操作比如購物車來說,就成了問題了。服務器端的WEB應用程序必須允許用戶通過多個步驟才能完成全部的物品采購。在這種情況下,應用程序必須跟蹤由同一個瀏覽器發送的多個請求所提供的信息,即記住用戶的交易狀態。 

  通常,采用兩種方法來解決這個問題。一個是每次應答都返回完整的狀態,讓瀏覽器把它作為下次請求的一部分再發送過來。二是把狀態保存在服務器的某個地方,只發送回一個標識符,瀏覽器在下次提交中把這個標識符發送過來;這樣,就可以定位存貯在服務器上的狀態信息了。 

  在這兩種方法中,信息可以通過下列三種方法中的一種發送給瀏覽器: 
1.作為COOKIE; 但是不是所有瀏覽器都支持,而且用戶也可以禁用COOKIE 
2.附加在主體的URL中 
2.作為隱藏域嵌入HTML表單中; 

  當表但提交時,瀏覽器將作為常規HTTP參數的方式將這些信息返回服務器,當狀態信息被注入時,它將作為請求URL的一部分傳送到服務器,但是這在瀏覽器和服務器之間來回傳遞信息的效率較低,所以一般還是選擇把信息保存在服務器中,即上面兩種方法中的第二種。在瀏覽器和服務器之間來回傳遞一個標識符,這就是所謂的會話(session)跟蹤。來自瀏覽器的所有包含同一個標識符(這里是SESSIONID)的請求同屬於一個會話。 

  會話的有效期直到它被終止為止,或者當用戶在異端時間內沒有動作,由服務器自動設置為過期。目前沒有辦法通知服務器用戶已經關閉瀏覽器,因為在瀏覽器和服務器之間沒有一個持久的連接,並且瀏覽器關閉時也不向服務器發送信息。同時,關閉瀏覽器通常意味着會話ID丟失;COOKIE將過期,或者注入了信息的URL將不能再使用。所以當用戶再次打開瀏覽器的時候,服務器無法將新的請求與以前的會話聯系起來,而只能創建一個新的會話。然而,所有與前一個會話有關的數據依然存放在服務器上,直到會話過期被清除為止。

響應狀態嗎表示的意義                                

200:表示成功,正常結果;
302:表示重定向,轉到別的站點;
304:表示未修改;
404:表示找不到資源;
500:表示內部服務器錯誤;

附上HTTP的請求和響應詳解鏈接                 

1、http://canrry.iteye.com/blog/1331292  

2、http://blog.csdn.net/fengzijia/article/details/50134819


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM