入門:HTTP(一)

互聯(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)溝通的呢?隨我來看~

image

如圖所示,瀏覽器發(fā)起請求→服務器在80端口接收請求→服務器發(fā)出響應返回內(nèi)容→瀏覽器負責下載響應內(nèi)容。我們?yōu)g覽器和服務器就是這樣實現(xiàn)了交互溝通啦。

小tips:

1.80端口專門用來服務HTTP噠。

2、如下圖這樣的一個URL,主要就是以下幾部分組成。

image

二、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

image

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

image

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

image

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

image

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

image

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

image

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

image

注: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 "

image

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

image

我們可以看到這是GET請求,那么post請求呢?

輸入:

Curl -XPOSt -s -v -H "cy:xxx" -- "https://www.baidu.com"

image

果然變成了post請求~

最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,527評論 19 139
  • 什么是HTTP? 在Web應用中,服務器把網(wǎng)頁傳給瀏覽器,實際上就是把網(wǎng)頁的HTML代碼發(fā)送給瀏覽器,讓瀏覽器顯示...
    Frank_io閱讀 300評論 0 0
  • 問題 1.HTTP 請求包括哪些部分2.HTTP 響應包括哪些部分3.如何用Chrome開發(fā)者工具查看 HTT...
    加油吧_閱讀 362評論 0 0
  • 《圖解 HTTP》讀書筆記 通信模型 HTTP 協(xié)議被用于客戶端和服務器之間的通信,請求訪問文本或者圖片等資源的...
    要上班的斌哥閱讀 723評論 0 3
  • 一、概念(載錄于:http://www.cnblogs.com/EricaMIN1987_IT/p/3837436...
    yuantao123434閱讀 8,728評論 6 152

友情鏈接更多精彩內(nèi)容