互聯(lián)網(wǎng)飛速發(fā)展,我們很難相信僅僅20幾年前,也就是1990年,這一年 Tim Berners-Lee才 發(fā)明了用網(wǎng)址就能訪問網(wǎng)頁的辦法,他發(fā)明了第一個網(wǎng)頁、第一個瀏覽器和第一個服務器。
那么1990之前呢?人們的使用電腦只局限于不聯(lián)網(wǎng)的工作和游戲,聯(lián)網(wǎng)使用的最主要的就是email,所以1980年-1990年間,人們迫切的需要一種更好的上網(wǎng)方式,于是http在眾多方案中脫穎而出,被大眾所使用。
一、什么是HTTP
HyperText Transfer Protocol 超文本傳輸協(xié)議
HTTP的作用就是指導瀏覽器和服務器如何進行溝通。那么又是如何實現(xiàn)溝通的呢?隨我來看~

如圖所示,瀏覽器發(fā)起請求→服務器在80端口接收請求→服務器發(fā)出響應返回內(nèi)容→瀏覽器負責下載響應內(nèi)容。我們?yōu)g覽器和服務器就是這樣實現(xiàn)了交互溝通啦。
小tips:
1.80端口專門用來服務HTTP噠。
2、如下圖這樣的一個URL,主要就是以下幾部分組成。

二、HTTP要求
1、發(fā)送請求的格式
第一部分:動詞 路徑 協(xié)議/版本
第二部分:key1 : value1
第二部分:key2 : value2
第二部分:key3 : value3
第二部分:Content-Type : application / x-www-form-urlencoded
第二部分:HOST:www.baidu.com
第二部分:User-Agent : Curl/7.54.0
第三部分:
第四部分:要上傳的數(shù)據(jù)
請求最多包含四部分,最少包含三部分,也就是第四部分可以空著
第三部分永遠都是一個回車(/n)我們需要它來清晰的劃出三四部分的界限
動詞主要有GET(獲?。?、POST(上傳)、PUT(整體更新)、PATCH(局部更新)、DELETE(刪除)等
這里的路徑包括查詢參數(shù),但不包括錨點(什么是參數(shù)?什么是錨點?倒回去看看小tips)
如果你沒有寫路徑,那么路徑就會默認為/
第二部分的Content-Type標注了的第四部分的格式
不按協(xié)議來,是會出錯噠
2、如何使用chrome開發(fā)者工具查看HTTP要求呢?
a、打開Network

b、地址欄輸入網(wǎng)址

c、點擊Network,查看request,點擊view source

d、這樣我們就可以看到請求的前三部分了,如圖所示就是GET請求的實例,我們可以對照著前面給出的標準再次理解一下。

e、如果你想看到請求的第四部分,那么在FormData或者Payload中查看
(一般上傳數(shù)據(jù),用到post請求時,是我們登陸時,需要輸入用戶名密碼提交上去)
三、響應
我們的瀏覽器發(fā)出了請求,服務器自然就要響應,接下來我們就看看服務器如何響應?
1、響應的格式
第一部分:協(xié)議/版本號 狀態(tài)碼 狀態(tài)解釋
第二部分:key1 : value1
第二部分:key2 : value2
第二部分:Content-Length :17931
第二部分:Content-Type:txt/html
第三部分:
第四部分:要下載的內(nèi)容
狀態(tài)碼要背,這是服務器對瀏覽器說的話
1XX不常用
2XX表示成功
3XX一般是服務器叫你走開啦,比如301,意思是你所訪問的已經(jīng)永久的搬走了,比如302表示臨時外出,過幾天再回來,這不是叫你走開么~
4XX一般是服務器對瀏覽器說你丫的錯啦,比如404就是訪問者出錯了,可能網(wǎng)址輸錯了~
5XX一般就是服務器自己出錯啦,比如502,可能是服務器崩啦
詳細請看→維基百科
第二部分的Content-Type標注了第四部分的格式
3、用chrome查看響應
a、打開Network
b、地址欄輸入網(wǎng)址
c、選中第一個響應
d、查看Response Headers,點擊view source

e、這樣我們就可以看到請求的前二部分了,是不是和我們的格式相同~

f、查看Response或者Preview,你會看到響應的第四部分。

注:GET要求和POST要求對應的響應可以一樣,也可以不一樣
響應的第四部分可以很長很長很長,比如Content-Length=17931
四、curl命令
那我們可不可以在命令行里實現(xiàn)這一切呢,當然可以,那就是curl命令。
curl是一個利用URL規(guī)則在命令行下工作的文件傳輸工具。它支持文件的上傳和下載,所以是綜合傳輸工具,但按傳統(tǒng),習慣稱curl為下載工具。
我們輸入
Curl -s -v -H "cy:XXX" -- "https:// www.baidu .com "

可以看到接著省城一大堆的代碼,我們直接來到最下面就可以看到

我們可以看到這是GET請求,那么post請求呢?
輸入:
Curl -XPOSt -s -v -H "cy:xxx" -- "https://www.baidu.com"

果然變成了post請求~