日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

谈一谈Http Request 与 Http Response

發布時間:2023/12/2 编程问答 42 豆豆
生活随笔 收集整理的這篇文章主要介紹了 谈一谈Http Request 与 Http Response 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

?

談一談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的,就沒有辦法了。

?


更多專業前端知識,請上 【猿2048】www.mk2048.com

總結

以上是生活随笔為你收集整理的谈一谈Http Request 与 Http Response的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。