HTTP的粗略瞭解

在這裏插入圖片描述

1

post,get這兩個HTTP的請求方式,在剛開始接觸HTTP協議的時候,我傻傻分不清,那時候還不斷吐槽學編程就去學語言啊!爲什麼還學這種鬼東西哦!

直到我看到了這麼一張圖:

在這裏插入圖片描述

我才明白,原來我們平常的上網過程就是客戶端與遠程服務端交互的過程啊。

但是這又跟HTTP有什麼關係呢?那必然是有關係的啊!

首先我們先來簡單瞭解一下啥叫HTTP。

HTTP是一種超文本傳輸協議,是一種基於TCP應用層,將服務端的數據傳輸給客戶端的一種協議。

所以我們現在可以知道,平常我們上網獲取的圖片,文字,視頻等數據都是由HTTP協議進行傳遞的。

講到這裏,也許有同學會問一個問題:

啥是服務端,啥又是客戶端啊?

我覺得這是一個好問題,對於小白來說,他們確實不知道啥是客戶端,啥是服務端,在這裏我也想厚臉皮的說一句,其實我原來也不知道…

所以爲了解決小白們的疑惑,我也來簡單介紹一下吧。

客戶端嘛,是與服務端相對應的詞,客戶客戶,就是一個被服務的對象,所以用一句話來說就是:客戶端是產品或者服務所指向的終點。

像上圖中的電腦,手機都是客戶端,準確的來說,它們內部的應用程序纔是客戶端,因爲這些應用程序都有一個與其相對應的服務端給它們提供服務。

既然初步瞭解客戶端,那麼我們也就知道了,向客戶端提供服務,保存客戶端數據的叫作服務端。

在這裏插入圖片描述

2

在瞭解客戶端和服務端後,讓我們再次回到客戶端與服務端的交互過程中來。

之前說了每一個客戶端,都有着與其相對應的服務端。那麼我們不得不思考一個問題。

這麼多的客戶端該如何才能找到與之對應的服務端呢?

在這裏不得不說HTTP協議是真的偉大,針對上面這個問題,HTTP協議本就有着解決方案。

客戶端與服務端要交互,前提就是要建立一個連接。而HTTP協議中的URL就起到了這個作用。

URL叫做統一資源定位器,HTTP使用它來傳遞數據與建立連接。

互聯網上的每一個資源都有一個唯一的URL,URL用來指出它們存放的地址。

簡單來說,URL可以大致分爲協議部分,域名部分,文件名部分。

其實你也可以理解爲:URL就是網址

假設我們要在我們的瀏覽器上訪問百度,那麼我們現在用的瀏覽器就是客戶端,而要訪問的百度,就是服務端。

之後我們在地址欄中輸入http://www.baidu.com,很明顯,這個http://www.baidu.com就是URL。

可以看出這個URL由協議部分(HTTP協議)和域名部分也就是服務器部分(www.baidu.com)組成。

下面再來看一下這個地址:

http://www.swpan.com/my/photo/1.jpg

在這裏插入圖片描述

這個URL就很棒了,由三部分組成,除了協議和域名部分,還多了一個文件名部分。這個文件名部分,用來指明你獲取的是服務端什麼路徑下的什麼文件。

像這裏就是獲取服務端,my/photo/下面的1.jpg 文件。

3.28-7.jpg

3

想必大家也發現了,上圖中的那個兩個單詞吧。

request,response

這兩個單詞的意思分別是請求和響應的意思。

所以結合HTTP協議,我們就可以曉得。

request 是客戶端通過HTTP發送一個請求消息給服務器

respones 是服務器接收客戶端發過來的請求,並返回一個HTTP響應消息。

關於request和response方面的東西,我今天先不說了,下次有機會再單獨寫篇文章介紹這兩個玩意。

我接下來要說的的就是開頭提起的post和get。

我們在客戶端請求服務端的時候,HTTP協議定義了好幾種請求的方法:

GET 請求指定的頁面信息,並返回實體主體。

HEAD 類似於get請求,只不過返回的響應中沒有具體的內容,用於獲取報頭

POST 向指定資源提交數據進行處理請求(例如提交表單或者上傳文件)。數據被包含在請求體中。POST請求可能會導致新的資源的建立和/或已有資源的修改。

PUT 從客戶端向服務器傳送的數據取代指定的文檔的內容。

DELETE 請求服務器刪除指定的頁面。

CONNECT HTTP/1.1協議中預留給能夠將連接改爲管道方式的代理服務器。

OPTIONS 允許客戶端查看服務器的性能。TRACE 回顯服務器收到的請求,主要用於測試或診斷。

而我們用到最多的就是post和get這兩種請求方法。

這兩個都可以作爲HTTP中請求的方法,那麼它們之間有什麼區別呢?

下面我就簡單來說一下這兩個玩意的區別,讓大家對他們熟悉起來。

在這裏插入圖片描述

4

我們先來看一下W3C的解釋:

GET

有關 GET 請求的其他一些註釋:

GET 請求可被緩存

GET 請求保留在瀏覽器歷史記錄中

GET 請求可被收藏爲書籤

GET 請求不應在處理敏感數據時使用

GET 請求有長度限制

GET 請求只應當用於取回數據

POST

有關 POST 請求的其他一些註釋:

POST 請求不會被緩存

POST 請求不會保留在瀏覽器歷史記錄中

POST 不能被收藏爲書籤

POST 請求對數據長度沒有要求

官方的解釋其實已經把重要的幾點都指出來了,下面我就再補充一點,以及做一些解釋。

雖然都是提交方法,但是get在提交的時候,提交內容都會連在URL後面,顯示在網址欄中,可以被看到。所以安全性有所降低,所以一般做web開發,提交用戶密碼時等一些敏感操作時,都不會用get這個方法。

post請求的內容不會出現在URL後面,也不會出現在歷史記錄中,它傳遞的參數只出現在request body中,我們是看不到的(除非抓包),所以它有時候會用來做一些敏感操作。

最後再解釋一下,get請求長度並沒有規定要多長,之所以長度受限制,是因爲瀏覽器的緣故,不同的瀏覽器的URL的長度都有着規定,所以get的請求信息加在URL後方時,自然就要因爲瀏覽器而受限制了。

公衆號:e些事

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章