談一談Http Request 與 Http Response

來源:互聯網
上載者:User

標籤:如何   apach   pac   less   str   curl   包含   查看   .com   

談一談Http Request 與 Http Response  

 

寫在前面的話:最近幫朋友弄弄商城,對於的基礎開發,基本上就是各種post、get,有時是伺服器向我們的伺服器post、get資料,有時需要我們自己的伺服器向伺服器各種post、get,之間通過json或者xml傳送資料。今天就來總結一下http相關的request和response,就從以下幾個問題入手吧。

======本文開始========

1、什麼是HTTP Request 與HTTP Response?

  我們平時開啟瀏覽器,輸入網址,點擊Enter按鍵,然後我們想要的網頁就呈現在我們的面前,可是這個過程是怎麼實現的呢?

  簡單來說是這樣的:

(1)當我們按下Enter按鍵後,瀏覽器就會發送訊息給該網址所在的伺服器,這個過程叫做HTTP Request,Request故名思議,就是瀏覽器要向伺服器發出請求。

(2)伺服器收到瀏覽器發送的訊息後,能夠根據瀏覽器發送訊息的內容,做相應處理,然後把訊息回傳給瀏覽器。這個過程叫做HTTP Response,Response故名思議,就是伺服器針對瀏覽器的請求Request,進行相應Response。

(3)瀏覽器收到伺服器的Response資訊後,會對資訊進行相應處理,然後展示給我們。

  上面的三個過程,其實就是兩個程式之間的對話,或者叫做兩個進程之間的對話,其中一個程式是瀏覽器,被稱作用戶端或者Client,用來發送Request;另一個程式是Web伺服器,可以是apache等等,用來針對使用者的Request,做出相應的Response,稱為伺服器端或者Server。

  Client除了是瀏覽器,還可以是我們自己寫的程式,這樣我們就需要在程式裡面通過自己寫代碼去完成上面操作:發送Request-->收到Response資訊-->分析Response資訊,進行處理。

  這裡需要注意一下:比如我們自己建立了一個網站,需要與第三方的網站伺服器如伺服器進行互動,如果是我們自己的網站向伺服器發送Request,伺服器返回Response資訊,那麼我們的網站就是用戶端,而伺服器是服務端;如果是伺服器向我們的網站發送Resquest,而我們的伺服器回複Response伺服器,那麼我們的網站就是伺服器端,而伺服器就是用戶端。總之,就是兩個進程之間的通訊而已。

  理解了上面的過程,接下來就又出現另外一個問題,Client與Server之間傳送資料,對方如何能夠識別彼此之間傳送的資訊呢?那麼就需要彼此之間傳送資訊遵循一定的規範,這就是HTTP協議,因此叫做HTTP Request和HTTP Response。

   HTTP協議的全稱為Hyper Text Transfer Protocol,目前為止主要有三個版本:HTTP/0.9,HTTP/1.0,HTTP/1.1,詳細內容就不說了,有興趣的可以看看http協議的曆史。這裡我們需要關注的是,Client與Server端都遵循HTTP協議進行Request和Response,而我們如果想要對資料進行分析,有必要知道彼此之間通訊的資料格式到底是什麼樣子的,請看下面一個問題。

2、HTTP Request 與HTTP Response資料格式?

(1)HTTP Request資料格式

  主要由三部分組成:

  1)HTTP Request Method,URI,Protocol Version

    該部分位於HTTP Request的首行,包含HTTP Request Method,URI,Protocol Version三部分,例如“GET /test.html HTTP/1.1”,表示HTTP Request Method為GET方法,URI為/test.htlm,HTTP協議版本號碼為1.1。

  2)HTTP Request Headers:

    該部分為Request的頭部資訊,包含有編碼資訊,請求用戶端類型等等資訊。

  3)HTTP Request Body:

    該部分含有Request的主體資訊,與HTTP Request Header之間隔開一行。

(2)HTTP Response資料格式

  與HTTP Request資料格式類似,也包含三部分資訊。

  1)Protocol/Version,Status Code,Description

  2)HTTP Response Headers

  3)HTTP Response Body

  可以使用Chrome瀏覽器按F12查看,也可以使用cUrl或wireshak查看,也可以自己編寫程式獲得各個資訊去查看,再對HTTP Request和HTTP Response資料格式進行理解,印象會更深一些。

3、為什麼我們需要Session?

  用戶端與伺服器端通過HTTP Request和HTTP Response進行資料通訊,根據HTTP Request和HTTP Response資料格式進行資料解析,但是還有一個問題,那就是HTTP是無狀態協議( stateless protocol),也就是說每次用戶端向伺服器端Request,伺服器端都會認為是一個新的Request,無法記錄用戶端的資訊,這種情況就會導致很多問題,例如我們登陸進一個網站,如果我們需要訪問別的頁面,我們點擊完連結後,伺服器會認為是一個新的使用者,如果該頁面需要驗證使用者資訊,那麼用戶端就需要重新輸入登陸資訊,導致很多的問題。

  如何解決這個問題呢?就是通過Session。

  伺服器端對於訪問的用戶端,會產生該用戶端的唯一資訊,儲存在Session中,Session位於伺服器,可以儲存在伺服器的記憶體中,也可以儲存在檔案系統中,也可以儲存在伺服器的資料庫中,對於Session的管理,也是值得琢磨的一件事情。

  有了Session還不夠,因為每次訪問的用戶端都是一次新的Request,因此需要在Request的資訊中包含有用戶端的資訊,才能夠與伺服器端的Session進行對比,來確定是不是同一個用戶端。所以需要Session Tracking,才能正確的辨識用戶端。

4、如何進行Session Tracking?

  Request的資訊中包含有用戶端的資訊,主要有三種方式:

  1)Cookies
  儲存在用戶端,每一個cookie與一個唯一的SessionID關聯,當用戶端發送Request的時候,該資訊會一塊發過去,然後伺服器端就能夠根據Cookie的資訊與Session的資訊比對,來判斷用戶端的Request是否第一次請求;

  Cookie中會包含到期時間資訊,如果Cookie到期,那麼伺服器端也會認為是第一次Request,進而需要使用者登入;

  Cookies中還能包含其他敏感資訊,而且在用戶端儲存,因此可能會產生風險,想想也是,畢竟嘗到了小甜頭,自然要承受一定的風險;

  為了避免Cookies產生的風險,許多瀏覽器可以禁止Cookie;

  禁止Cookie後,有些網站就無法登入了,例如部落格園,如果在瀏覽器中禁止Cookie,就無法登入了。

  2)URL Rewriting

  對於用戶端禁用Cookie的情況,如果還想能夠識別Request,那麼就可以使用URL Rewriting的方法,在URL中會包含一段資訊,這段資訊能夠與相應的Session唯一對應,這樣當URL傳到伺服器端後就能夠判斷特定的Session了。通過URL Rewriting,無需在用戶端儲存有Cookies資訊,與特定Session相關聯的資訊直接通過URL來回傳輸。

  對於採用URL Rewriting方法的,如果我們儲存一個網址為標籤後,那麼以後再開啟標籤的話,會提示Session到期,因為Session有一定的時間期限,到期後,伺服器端就會刪除相應的Session資訊,以節省資源。

  3)使用Hidden類型的Form標籤

  除了上面的兩種方法,也可以通過 hidden類型的form標籤,例如<input type="hidden".../>,這種方式有兩個缺點:一是我們可以通過HTML原始碼就能夠看到一些資訊,甚至是一些敏感資訊;二是為了區分不同的使用者,該方法只能夠用在動態網頁中,對於純HTML的,就沒有辦法了。

 

談一談Http Request 與 Http Response

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.