可是http協議是基於TCP和IP協議的,也就是說,經過url並不能直接找到服務器,所以須要你的電信服務商,提供一個DNS服務器,它的做用就是,你輸入域名,輸出一個ip,解析這個域名到對應的ip,所以,你訪問一個域名時,DNS服務器會解析出相應的ip,你根據這個ip找到對應的服務器,服務器接收到請求,根據你的請求內容,返回對應的響應,客戶端拿到響應,下載響應,並根據用軟件展現出相應的內容。html
能夠在命令行用curl指令,模擬一次請求和響應前端
curl -s -v -H "yangdepp: xxx" -- "https://www.baidu.com" -s :slient不要顯示進度條 -v :verbose要顯示請求和響應,沒有-v則只顯示響應 -H "yangdepp:xxx"添加一個響應頭 -- "將要請求的網址"
還能夠加一個POST參數
加一個參數POST
請求示例 curl -X POST -s -v -H "yangdepp:xxx" -- "https://www.baidu.com"chrome
添加一個-d 上傳數據, POST帶數據的請求
curl -X POST -d "123456789" -s -v -H "yangdepp:xxx" -- "https://www.baidu.com"服務器
HTTP請求
首先能夠在命令行進行一次http請求,在命令行輸入命令:dom
curl -s -v -H "yangdepp: xxx" -- "https://www.baidu.com" -s :slient不要顯示進度條 -v :verbose要顯示請求和響應,沒有-v則只顯示響應 -H "yangdepp:xxx"添加一個響應頭 -- "將要請求的網址" 能夠看到http請求包含如下部分,以下圖:
其中:curl
GET / HTTP/1.1 //獲取根目錄的內容, 協議是http版本號是1.1,用GET請求
Host: www.baidu.com //訪問的是ip,可是要告訴他我訪問的域名
User-Agent: curl/7.54.0 //我用的是什麼軟件 curl
Accept: / //我接受你返回給個人任何內容
yangdepp: xxx //可加可不加
換行
也能夠用Chrome開發者工具查看 HTTP 請求內容 在地址欄輸入http://www.baidu.com,右鍵打開調試工具,點擊network,右下方的headers中有一個Request Headers,點擊view parsed 以下圖:
能夠看到與命令行的請求基本一致。
HTTP響應
在1的命令行進行HTTP請求後,後面還有一段返回的響應信息。以下圖
工具
// 響應(GET)
< HTTP/1.1 200 OK //協議
< Accept-Ranges: bytes
< Cache-Control: private, no-cache, no-store, proxy-revalidate, no-transform
< Connection: Keep-Alive
< Content-Length: 2443 //返回的內容的長度大小
< Content-Type: text/html //返回的內容的類型是html
< Date: Fri, 28 Sep 2018 14:25:53 GMT //返回的時間
< Etag: "5886041d-98b"
< Last-Modified: Mon, 23 Jan 2017 13:24:45 GMT
< Pragma: no-cache
< Server: bfe/1.0.8.18 //百度的前端服務器
< Set-Cookie: BDORZ=27315; max-age=86400; domain=.baidu.com; path=/url
<!DOCTYPE html> //返回額html內容spa
也能夠用Chrome開發者工具查看 HTTP 響應內容 依然是在地址欄輸入百度的地址,打開chrome的調試工具,點擊右下方的headers中有一個Response Headers,點擊view parsed 以下圖:
能夠看到和命令行獲得的響應基本一致。