1. 程式人生 > >HTTP請求和響應過程

HTTP請求和響應過程

1.HTTP協議

Internate的基本協議是TCP/IP(傳輸控制協議和網際協議)。而目前使用的FTP,HTTP都是建立在TCP/IP上的應用層協議。不同的協議對應不同的應用。而HTTP協議是Web應用所使用的主要協議。

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

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

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

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

2.基於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中

3)    作為隱藏域嵌入HTML表單中;

當表單提交時,瀏覽器將作為常規HTTP引數的方式將這些資訊返回伺服器,當狀態資訊被注入時,它將作為請求URL的一部分傳誦到伺服器,但是這在瀏覽器和伺服器之間來回傳遞資訊的效率較低,所以一般還是選擇把資訊儲存在伺服器中,即上面兩種方法中的第二種。

在瀏覽器和伺服器之間來回傳遞一個識別符號,這就是所謂的會話(session)跟蹤。來自瀏覽器的所有包含同一個識別符號(這裡是SESSIONID)的請求同屬於一個會話。

會話的有效期直到它被顯式地終止為止,或者當用戶在一段時間內沒有動作,由伺服器自動設定為過期。目前沒有辦法通知伺服器使用者已經關閉瀏覽器,因為在瀏覽器和伺服器之間沒有一個持久的連線,並且瀏覽器關閉時也不向伺服器傳送資訊。同時,關閉瀏覽器通常意味著會話ID丟失、COOKIE過期、或者注入了資訊的URL將不能再使用。所以當用戶再次開啟瀏覽器的時候,伺服器無法將新的請求與以前的會話聯絡起來,只能建立一個新的會話。然而,所有與前一個會話有關的資料依然存放在伺服器上,直到會話過期被清除為止

相關推薦

HTTP請求響應過程

1.HTTP協議 Internate的基本協議是TCP/IP(傳輸控制協議和網際協議)。而目前使用的FTP,HTTP都是建立在TCP/IP上的應用層協議。不同的協議對應不同的應用。而HTTP協議是Web應用所使用的主要協議。 HTTP協議基於請求響應模式,客戶端向伺服器傳送一個請求,請求頭包含請求的方法

HTTP請求響應過程

HTTP 無狀態性         HTTP 協議是無狀態的(stateless)。也就是說,同一個客戶端第二次訪問同一個伺服器上的頁面時,伺服器無法知道這個客戶端曾經訪問過,伺服器也無法分辨不同的客戶端。HTTP 的無狀態特性簡化了伺服器的設計,使伺服器

HTTP請求響應2:方法(Method)

trace 行處理 診斷 ack 中間 delete nds 最優 eas 方法表明了client希望server對資源運行的動作。經常使用的方法包含:GET、HEAD、POST、PUT、TRACE、OPTIONS和DELETE,每一個server能夠實現這些方法中

http請求響應的內容

什麽 請求 live 域名 har 查詢 keep 提交 時間 一、HTTP請求的四個部分: 1、HTTP請求的方法或者動作,GET或者POST等 Request Method: POST 2、請求地址URL(你連URL地址都沒有你請求什麽)

HTTP協議(5)HTTP請求響應

之前曾介紹過,所有的HTTP通訊都被構造成一對HTTP請求和HTTP響應,HTTP協議的請求與響應報文都是由“首部header”和“主體body”兩部分組成的。其中主體部分是請求和響應的資料,首部部分則規定了請求和響應的內容格式。 對於HTTP請求報文,主要由三部分組成:請求行、請求頭、請求正文。在請求頭和

概述HTTP請求 響應處理

1、概述   爬蟲,應該稱為網路爬蟲,也叫網頁蜘蛛人,網路螞蟻等   搜尋引擎,就是網路爬蟲的應用者 2、爬蟲分類   通用爬蟲:     常見就是搜尋引擎,無差別的收集資料,儲存,提交關鍵字,構建索引庫,給使用者提供搜尋介面     爬取一般流程:       1、初始一批URL,將這些URL

HTTP請求響應全過程解析

//轉載:https://blog.csdn.net/lzghxjt/article/details/51458540 http請求與響應全過程 2016年05月24日 00:15:10 鶴嘯九天1988 閱讀數:18314 版權宣告:本文為博主原創文章,未經博主允許

HTTP 請求響應格式

一次完整的HTTP請求過程從TCP三次握手建立連線成功後開始,客戶端按照指定的格式開始向服務端傳送HTTP請求,服務端接收請求後,解析HTTP請求,處理完業務邏輯,最後返回一個HTTP的響應給客戶端,HTTP的響應內容同樣有標準的格式。無論是什麼客戶端或者是什麼服務端,大家只要按照HTTP的協議標

http請求響應報文的架構

1.請求行(包含了請求方式、請求資源的路徑、遵循的協議及版本)GET /news3/1.html HTTP/1.1GET:請求方式,在HTTP協議中一共規定了7種請求方式, 只用GET和POST/news3/1.html:請求資源的路徑HTTP/1.1:瀏覽器傳送請求時所使用

Http 請求響應全過程

知識儲備 HTTP無狀態性 HTTP協議是無狀態的,同一個客戶端第二次訪問同一個伺服器上的頁面時,伺服器無法知道這個客戶端曾經訪問過,伺服器也無法分辨不同的客戶端。簡化了伺服器的設計,使得伺服器更容易支援大量併發的HTTP請求 HTTP持久連線

HTTP請求響應中 中文urlEncode urlDecode編碼問題

http請求時,如果附帶的引數被URLEncode之後,到達web容器之後,開發者獲取到的引數值會自動變成了encode之前的值。這是一個很好的特點,開發者完全可以忽略http的引數是否需要decode這種事 tomcat會對請求引數中的中文自動進行urlDecode解

Http 請求響應的gzip壓縮

通過請求和響應頭中增加Accept-Encoding: gzipContent-Encodin:gzip確定客戶端或伺服器端是否支援壓縮舉例,客戶端傳送請求,服務端壓縮響應資料返給客戶端1、客戶端請求中增加Accept-Encoding: gzip表示客戶端支援gzip;2、

Dart的HTTP請求響應(1)

GET請求 import 'package:http/http.dart' as http; main(List<String> arguments) { var url =

Http請求響應分析

/** *@ author StormMaybin *@ date 2016-10-11 */ 生命不息,奮鬥不止! 開始之前 Http無狀態性 HTTP 協議是無狀態的(stateless)。也就是說,同一個客戶端第二次訪問同

HTTP請求響應1:概述

HTTP的報文分為請求報文和響應報文,開啟一個web頁面後,瀏覽器將發起一個HTTP請求報文,HTTP伺服器收到請求後將回送一個響應報文。 報文的基本結構 HTTP的請求和響應報文都由三個部分組成:對報文進行描述的起始行(start line)、包含屬性的首部(header

HTTP請求響應格式詳細解析

    1、基礎:     高層協議有:檔案傳輸協議FTP、電子郵件傳輸協議SMTP、域名系統服務DNS、網路新聞傳輸協議NNTP和HTTP協議等 中介由三種:代理(Proxy)、閘道器(Gateway)和通道(Tunnel),一個代理根據URI的絕對格式來接受請求,重寫全部或部分訊息,通過 URI的標識把已

HTTP請求響應

        以下是一個簡單的完整過程:        首先,我們想訪問本頁面。在瀏覽器上敲入“http://www.maketop.net/resource/rs_041112_02.php”.瀏覽器將連線www.maketop.net然後傳送:  >> GET /resource/rs_04

http請求響應格式

當瀏覽器向Web伺服器發出請求時,它向伺服器傳遞了一個數據塊,也就是請求資訊,HTTP請求資訊由3部分組成: l   請求方法URI協議/版本 l   請求頭(Request Header) l   請求正文 下面是一個HTTP請求的例子: GET/sample.jspHTTP/1.1 Accept:im

Servlet(10)Http協議、HTTP請求響應頭及其詳解(檔案下載)

1 HTTP協議 HTTP協議是網際網路上應用最廣泛的一種網路協議。是工作在TCP/IP協議基礎上的,所有的www檔案都必須遵守這個標準。設計HTTP的最初目的是為了提供一種釋出和接受HTML頁面的方法。 HTTP是TCP/IP協議的一個應用層協議,也是we

【轉載】掌握 HTTP 緩存——從請求響應過程的一切(下)

nbsp ron ast str bit people ring tps pos 作者:Ulrich Kautz 編譯:胡子大哈 翻譯原文:http://huziketang.com/blog/posts/detail?postId=58bd4dd1204d50674934