亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

http報文結構與curl的使用方法

發布時間:2021-08-30 15:46:00 來源:億速云 閱讀:248 作者:chen 欄目:大數據

本篇內容介紹了“http報文結構與curl的使用方法”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!

http協議使用廣泛,使用場景不必多說了。

http是應用層協議,基于tcp。如果要自己實現的話,應該先實現tcp部分的功能,然后按http的協議實現約定的功能。這種需求有時可能會出現,比如讀者想寫一個http服務器,那就要了解http協議。

但是,這一個流程,從http數據包,到tcp包(加tcp頭),再到ip包(加ip頭),以及它的逆向過程(解包過程),都有現成的庫來實現,讀者需要做的只是怎么更好的使用起來。

小程這里介紹的也不是什么復雜的http協議的實現,而只是介紹一下http請求與響應的數據結構,以及怎么便利地發送http請求。

本文介紹http請求與響應的報文結構,以及curl的使用。

先讓讀者看一個直觀的示例:在百度的搜索框中,敲入“helloworld”并回車,這時會發起一個http請求,用charles來抓包,可以看到這樣的請求與響應的信息: 
http報文結構與curl的使用方法

關于charles的使用,小程之前有介紹到,讀者可以關注“廣州小程”微信公眾號,并查閱“軟件基礎”菜單項的內容。

從數據包來看,有一個GET方法,返回了200的狀態碼,等等。

但這里混合了請求與響應的信息,如果分開來看,請求與響應各自有什么數據結構呢?

(1)請求報文

http請求數據,使用的結構是這樣的:

{請求行,請求頭,請求體}

小程引用網上的一張圖,這張圖描繪了這個結構: 
http報文結構與curl的使用方法

參照上圖,請求行是這個樣子:

GET /index.html HTTP/1.1 
或者: 
POST /xiaocheng/about.html HTTP/1.1 

注意,請求行一般不包括host的地址,而host地址存放在請求頭中。

然后是請求頭,分為多行,每一行是一個鍵值對(key: value的格式),比如請求頭是這個樣子的: 
http報文結構與curl的使用方法

最后是請求體,一般來GET方法是不帶請求體的,因為所有內容都放到請求行(特別是url中)或請求頭中了,一般來說POST方法需要帶請求體,比如在iTunes下載一個APP時,POST請求數據是這樣的: 
http報文結構與curl的使用方法
http報文結構與curl的使用方法

(2)響應報文

響應數據的結構,也可以分三部分:

{響應行,響應頭,響應體}

這里給一個響應實例: 
http報文結構與curl的使用方法
http報文結構與curl的使用方法

響應行,也叫狀態行,包括http的版本、狀態碼與狀態描述。

響應頭跟請求頭一樣,由一行一行的key-value構成。

響應體一般就是請求方想要的數據了,但響應體不一定會存在,比如HEAD請求方法時不返回響應體(這時響應行就是請求方想要的)。

http請求與響應數據,還有其它的一些知識,比如GET與POST的區別、返回404/403/303表示什么意思,等等,這些知識讀者可以具體搜索一下,小程這里不展開了。

在簡單介紹過http請求與響應報文的結構后,小程介紹一個工具,這個工具可以發起http請求,這個工具就是curl。

(3)curl的使用

小程使用的是macos,mac自帶了curl工具。

curl的功能也算強大的,提供了系列的選項。這里只介紹一些常規的使用方式。

get請求,與保存

curl www.baidu.com 


curl "http://172.17.21.197:54321?pa1=hello"


// 保存,下載 

curl -o file.html www.baidu.com 

curl -o i.jpg http://img3.douban.com/lpic/s4549903.jpg 


// -A 仿造ie與運行平臺 

curl -A "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)" www.baidu.com 


// -e 仿造入口鏈接(即referer,用于盜鏈)

curl -A "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)" -e "www.google.com" www.baidu.com  


// -x 使用代理 

curl -x a.b.c.d:54321 http://google.com 


// -D 保存cookie到文件 

curl www.baidu.com -o aa.txt -D cookie.txt 


// -b 讀取文件并當作cookie數據來請求

curl www.baidu.com -b cookie.txt  


// -H 設置請求頭,這里設置了cookie跟ua

curl -H "Cookie: install_id=14621691626; sid_guard=\"0eb878191489e4247f643672c932c814|1504782359|2592000|Sat\054 07-Oct-2017 11:05:59 GMT\"; \n User-Agent: xxx/1.5.6 (iPhone; iOS 10.2; Scale/2.00)" "https://xxx.yy.com/…" 

post

// -d 請求體 

curl -d "user=nickwolfe&password=12345" http://www.linuxidc.com/login.cgi 


curl -d "key=jet" 192.168.2.32:54321

post,以表單的方式(multipart/form-data)

// "file"為key名,隨便起,后面為文件路徑(包括文件包)

curl -F "file=@./myfile.ok" "http://172.17.xx.xx:54321" 

“http報文結構與curl的使用方法”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識可以關注億速云網站,小編將為大家輸出更多高質量的實用文章!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

长垣县| 广水市| 潞城市| 馆陶县| 谷城县| 建始县| 呼玛县| 大渡口区| 利辛县| 永州市| 永城市| 柘荣县| 富锦市| 宝兴县| 建德市| 万宁市| 稷山县| 仪陇县| 达拉特旗| 汉源县| 延川县| 敖汉旗| 五大连池市| 左云县| 裕民县| 宁德市| 阳谷县| 莱芜市| 龙川县| 华容县| 那坡县| 建宁县| 将乐县| 汾阳市| 马龙县| 桃源县| 孟连| 梓潼县| 扶余县| 宁波市| 舟曲县|