HTTP是什么
協(xié)議砸西,就是雙方為了交流而設置的規(guī)則。而超文本傳輸協(xié)議(HTTP)就是客戶端和服務器端之間相互通信而設置的規(guī)則。只要客戶端與服務器都使用HTTP協(xié)議氯庆,雙方就能相互理解各自所發(fā)送信息的含義纪蜒。
通過使用網(wǎng)頁瀏覽器(如IE衷恭、Chrome)等工具,客戶端發(fā)起一個HTTP請求到服務器上的指定端口(默認端口為80)纯续。服務器則在該端口監(jiān)聽客戶端的請求随珠,一旦收到請求,服務器會響應客戶端并返回一個狀態(tài)猬错,比如"HTTP/1.1 200 OK"窗看,以及返回的內(nèi)容,如請求的文件倦炒、錯誤消息显沈、或者其它信息。
HTTP請求
HTTP請求包含以下幾個信息:
- 動詞 路徑 協(xié)議/版本(例如GET /images/logo.gif HTTP/1.1逢唤,表示從/images目錄下請求logo.gif這個文件)
- Key1: value1(例如Accept-Language: en)
- 空行
- 要上傳的數(shù)據(jù)
HTTP響應
HTTP響應包含以下幾個信息:
- 協(xié)議/版本號 狀態(tài)碼 狀態(tài)解釋(例如HTTP/1.1 200 OK拉讯,表示請求已成功,請求所希望的響應頭或數(shù)據(jù)體將隨此響應返回)
- Key1: value1
- 空行
4 要下載的內(nèi)容
使用Chrome開發(fā)者工具查看HTTP請求&發(fā)送內(nèi)容
-
打開Chrome鳖藕,在空白位置右擊鼠標魔慷,選擇檢查,進入開發(fā)者模式進入開發(fā)者模式
-
選擇Network標簽著恩,輸入并打開查詢網(wǎng)址院尔,選擇第一項進入請求
- 選擇Request Headers或Response Headers即可查看請求或響應信息的1、2部分(記得選擇View Source)喉誊,選擇Response可查看第四部分查看信息
-
查詢結(jié)果查詢結(jié)果
使用curl命令查看HTTP請求&發(fā)送內(nèi)容
curl是一個利用URL規(guī)則在命令行下工作的文件傳輸工具邀摆,可以說是一款很強大的http命令行工具。它支持文件的上傳和下載伍茄,是綜合傳輸工具栋盹,但按傳統(tǒng),習慣稱url為下載工具幻林。
- 語法 :
$ curl [option] [url]
- 常見參數(shù):
-A/--user-agent <string> 設置用戶代理發(fā)送給服務器
-b/--cookie <name=string/file> cookie字符串或文件讀取位置
-c/--cookie-jar <file> 操作結(jié)束后把cookie寫入到這個文件中
-C/--continue-at <offset> 斷點續(xù)轉(zhuǎn)
-D/--dump-header <file> 把header信息寫入到該文件中
-e/--referer 來源網(wǎng)址
-f/--fail 連接失敗時不顯示http錯誤
-o/--output 把輸出寫到該文件中
-O/--remote-name 把輸出寫到該文件中贞盯,保留遠程文件的文件名
-r/--range <range> 檢索來自HTTP/1.1或FTP服務器字節(jié)范圍
-s/--silent 靜音模式。不輸出任何東西
-T/--upload-file <file> 上傳文件
-u/--user <user[:password]> 設置服務器的用戶和密碼
-w/--write-out [format] 什么輸出完成后
-x/--proxy <host[:port]> 在給定的端口上使用HTTP代理
-#/--progress-bar 進度條顯示當前的傳送狀態(tài)
- 示例
$ curl -s -v -H "Hello" -- "https://www.baidu.com"
用 curl 創(chuàng)造一個請求沪饺,并得到響應
請求與響應
$ curl -o baidu.html www.baidu.com
用curl抓去百度首頁保存到當前目錄下的baidu.html中
$ curl ip.gs
用curl查詢本機IP地址