Http請求與響應

Limyes發表於2018-04-08

Http全稱為HyperText Transfer Protocol,超文字傳輸協議,它的作用就是指導瀏覽器和伺服器進行溝通,正常的溝通過程是:

瀏覽器發起請求-->伺服器在80埠接收請求-->伺服器返回一個內容響應-->瀏覽器下載響應的內容

發起請求的方式有兩種,一種是直接在瀏覽器輸入對應網址或進行某種操作,另一種是用命令列curl指令發起請求。

1、使用瀏覽器輸入網址發起請求,即url,一個url一般包含以下幾個部分:

協議   域名  埠  路徑  查詢引數  錨點

比如:www.baidu.com/s?wd=hello&… 

https為協議名稱,www.baidu.com為訪問的域名,/s是路徑,該路徑不代表真的有對應的檔案存在,?wd=hello&rsv_spt=1為查詢引數,#5為錨點。

在瀏覽器檢視請求和響應內容:

開啟chrome瀏覽器,右上角設定裡選擇更多工具-->開發者工具,會看到多了這樣一個視窗,點選network

Http請求與響應

重新整理一個網頁時會發現多出很多這樣的請求

Http請求與響應

點選第一個進入會出現以下頁面:

Http請求與響應

點選view source即可以看到對應的內容,其中Response Headers為響應內容,Request Headers為請求內容。

2、使用curl指令:

curl用法:curl (選項)(引數)

選項有一些常見的縮寫如下:
-a/--append   上傳檔案時,附加到目標檔案

-A/--user-agent <string>  設定使用者代理髮送給伺服器

-d/--data <data>  Http POST方式傳送資料

-D/--dump-header <file> 把header資訊寫入到該檔案中

-e/--referer  來源網址

-f/--fail  連線失敗時不顯示http錯誤

-F/--form <name=content>  模擬http表單提交資料

-G/--get  以get的方式來傳送資料

-H/--header <line>  自定義頭資訊傳遞給伺服器

-i/--include  輸出時包括protocol頭資訊

-I/--head  只顯示請求頭資訊

-j/--junk-session-cookies  讀取檔案忽略session cookie

-k/--insecure  允許不使用證書到SSL站點

-K/--config   指定的配置檔案讀取

-l/--list-only  列出ftp目錄下的檔名稱

-m/--max-time <seconds>  設定最大傳輸時間

-o/--output  把輸出寫到該檔案中

-O/--remote-name   把輸出寫到該檔案中,保留遠端檔案的檔名

-p/--proxytunnel  使用HTTP代理

-s/--silent  靜默模式。不輸出任何東西

-u/--user <user[:password]>   設定伺服器的使用者和密碼

-v/--version  顯示版本資訊

-X/--request <command>  指定什麼命令

命令請求例項:

curl -s -v  -H "hello" --"https://www.baidu.com"

意思向百度發起一個請求,同時傳送內容為hello的頭資訊。

可以看到給我們返回了很多東西,其中下面這段是傳送的請求內容和收到的響應內容:

Http請求與響應

請求的內容最多包含4部分,最少包含3部分,第四部分可以為空:

第一部分:動詞 路徑 協議/版本

動詞(請求的方式GET/POST/PUT/PATCH/DELETE)

Get:請求指定的頁面資訊,並返回資料

Post:向指定資源提交資料進行處理請求

Put:從客戶端向伺服器傳送的資料全面替換指定的文件內容

Patch:從客戶端向伺服器傳送的資料部分替換指定的文件內容

Delete:請求伺服器刪除指定的內容

路徑:發起請求的連結中的路徑,可以為空,但預設都是以/開頭,路徑中包括查詢引數,但是不包括錨點

協議:使用的協議比如https,ftp等等

版本號:協議版本號

第二部分格式:key:value

Http請求與響應

第三部分:永遠都是一個回車(/n)

第四部分:一般為要上傳的資料,並且在第二部分中如果有content-type,那麼content-type的值標註了第四部分內容的格式。

不寫請求方式時預設為Get方式,也可以換為Post請求,傳送資料到對應連結:

curl -X POST -d "1234" -s -v -H "hello" --"https://www.baidu.com"

得到的請求內容為:

Http請求與響應

獲得的響應內容:

Http請求與響應

響應的格式也是由四部分組成:

第一部分:協議/版本號  狀態碼  狀態解釋

狀態碼:

200 :請求成功   202:伺服器成功接收請求   301:被請求的資源已經永久移動到新位置

302:被請求的資源暫時不可以訪問,以後可以再訪問

404:請求失敗,請求所希望得到的資源沒有在伺服器上找到

500:伺服器錯誤  502:作為閘道器或代理工作的伺服器嘗試執行請求時,從上游伺服器得到無效的響應

第二部分格式:key:value,同樣的,content-type標註了第4部分的格式

第三部分:一個回車(/n)

第四部分:要下載的內容

以上是關於對http請求與響應的簡單瞭解。





相關文章