http簡介
http的英文名稱是:Hypertext transfer protocol.
Tim Berners-Lee (中文名是李爵士)浪慌,在1989年至1992年間哮内,發(fā)明了WWW
(world wide web),一適用于全世界的網絡荔棉。
主要包括三個概念
- URI邑狸,俗稱網址(統(tǒng)一資源標示符)
- HTTP到涂,兩個電腦之間傳輸內容的協(xié)議
- HTML脊框,超級文本,主要用來頁面跳轉
URL的作用是讓你訪問一個頁面养盗,HTTP的作用是能讓你下載這個頁面缚陷,HTML的作用是能讓你看懂這個頁面。
URI是什么
李爵士除了發(fā)明這些概念往核,還付諸了行動:
1箫爷、發(fā)明了第一個服務器
2、發(fā)明了第一個瀏覽器
3、發(fā)明了第一個網頁 (世界上第一個網頁還能瀏覽 網址是:info.cern.ch)
URI是什么虎锚?
google URI維基百科(Uniform Resource Identifier)
URI分為URL(統(tǒng)一資源定位符)和URN(統(tǒng)一資源名稱)硫痰,我們一般使用URL作為網址。
URL的常見組成
DNS的全稱是 Domain Name System(域名系統(tǒng))
- 輸入域名
- 輸出IP
Server(服務器) + Client(客戶端) + HTTP
21端口 FTP開放
443端口 HTTPS
1080端口 代理服務器
3306端口 MySQL服務器
80端口 HTTP協(xié)議
瀏覽器與服務器的交互
- 瀏覽器負責發(fā)起請求
- 服務器在80端口接收請求
- 服務器負責返回(響應)網頁
- 瀏覽器負責下載響應內容
HTTP的作用就是: 指導瀏覽器和服務器如何進行溝通
請求與響應
請求示例:
curl -s -v -- "https://www.baidu.com"
請求內容為:
GET /HTTP/1.1
Host: www.baidu.com
User-Agent: curl/7.53.0
accept: * / *
curl -X POST -s -v -- "https://www.baidu.com"
請求內容為:
POST / HTTP/1.1
Host: www.baidu.com
User-Agent: curl/7.53.0
Accept: * / *
curl -X POST -d "1234567890" -s -v -- "https://www.baidu.com"
請求內容為:
POST / HTTP/1.1
Host: www.baidu.com
User-Agent: curl/7.53.0
Accept: * / *
Content-Length: 10
Content-Type: application/x-www-form-urlencoded
請求的格式
1 動詞 路徑 協(xié)議/版本
2 Key1: value1
2 Key2: value2
2 Key3: value3
2 Content-Type: application/x-www-form-urlencoded
2 Host: www.baidu.com
2 User-Agent: curl/7.54.0
3
4 要上傳的數(shù)據(jù)
- 請求最多包含四部分窜护,最少包含三部分效斑。(也就是說第四部分可以為空)
- 第三部分永遠都是一個回車(\n)
- 動詞有 GET POST PUT PATCH DELETE HEAD OPTIONS 等
- 這里的路徑包括「查詢參數(shù)」,但不包括「錨點」
- 如果你沒有寫路徑柱徙,那么路徑默認為 /
- 第 2 部分中的 Content-Type 標注了第 4 部分的格式
用chrome發(fā)請求
1.打開 Network
2.地址欄輸入網址
3.在 Network 點擊缓屠,查看 request,點擊「view source」
4.點擊「view source」
5.點擊「view source」
6.點擊「view source」
7.終于點了护侮?可以看到請求的前三部分了
8.如果有請求的第四部分敌完,那么在 FormData 或 Payload 里面可以看到
響應
請求了之后,應該都能得到一個響應羊初,除非斷網了滨溉,或者服務器宕機了。
響應示例
上面三個請求示例长赞,前兩個請求對應的響應分別為
1晦攒、GET 請求和 POST 請求對應的響應可以一樣,也可以不一樣
2得哆、響應的第四部分可以很長很長很長
用chrome查看響應
1脯颜、打開 Network
2、輸入網址
3贩据、選中第一個響應
4伐脖、查看 Response Headers,點擊「view source」乐设,點擊「view 5、source」绎巨,點擊「view source」
5近尚、你會看到響應的前兩部分
6、查看 Response 或者 Preview场勤,你會看到響應的第 4 部分
打開 Network
1戈锻、輸入網址
2、選中第一個響應
3和媳、查看 Response Headers格遭,點擊「view source」,點擊「view source」留瞳,點擊「view source」
4拒迅、你會看到響應的前兩部分
5、查看 Response 或者 Preview,你會看到響應的第 4 部分
狀態(tài)碼要背璧微,是服務器對瀏覽器說的話
1開頭的http狀態(tài)碼
表示臨時響應并需要請求者繼續(xù)執(zhí)行操作的狀態(tài)代碼作箍。
100 (繼續(xù)) 請求者應當繼續(xù)提出請求。 服務器返回此代碼表示已收到請求的第一部分前硫,正在等待其余部分胞得。
101 (切換協(xié)議) 請求者已要求服務器切換協(xié)議,服務器已確認并準備切換屹电。
2開頭的http狀態(tài)碼
表示請求成功
200 成功處理了請求阶剑,一般情況下都是返回此狀態(tài)碼;
201 請求成功并且服務器創(chuàng)建了新的資源危号。
202 接受請求但沒創(chuàng)建資源牧愁;
203 返回另一資源的請求;
204 服務器成功處理了請求葱色,但沒有返回任何內容递宅;
205 服務器成功處理了請求,但沒有返回任何內容苍狰;
206 處理部分請求办龄;
3xx (重定向)
重定向代碼,也是常見的代碼
300 (多種選擇) 針對請求淋昭,服務器可執(zhí)行多種操作俐填。 服務器可根據(jù)請求者 (user agent) 選擇一項操作,或提供操作列表供請求者選擇翔忽。
301 (永久移動) 請求的網頁已永久移動到新位置英融。 服務器返回此響應(對 GET 或 HEAD 請求的響應)時,會自動將請求者轉到新位置歇式。
302 (臨時移動) 服務器目前從不同位置的網頁響應請求驶悟,但請求者應繼續(xù)使用原有位置來進行以后的請求。
303 (查看其他位置) 請求者應當對不同的位置使用單獨的 GET 請求來檢索響應時材失,服務器返回此代碼痕鳍。
304 (未修改) 自從上次請求后,請求的網頁未修改過龙巨。 服務器返回此響應時笼呆,不會返回網頁內容。
305 (使用代理) 請求者只能使用代理訪問請求的網頁旨别。 如果服務器返回此響應诗赌,還表示請求者應使用代理。
307 (臨時重定向) 服務器目前從不同位置的網頁響應請求秸弛,但請求者應繼續(xù)使用原有位置來進行以后的請求铭若。
4開頭的http狀態(tài)碼表示請求出錯
400 服務器不理解請求的語法洪碳。
401 請求要求身份驗證。 對于需要登錄的網頁奥喻,服務器可能返回此響應偶宫。
403 服務器拒絕請求。
404 服務器找不到請求的網頁环鲤。
405 禁用請求中指定的方法纯趋。
406 無法使用請求的內容特性響應請求的網頁。
407 此狀態(tài)代碼與 401類似冷离,但指定請求者應當授權使用代理吵冒。
408 服務器等候請求時發(fā)生超時。
409 服務器在完成請求時發(fā)生沖突西剥。 服務器必須在響應中包含有關沖突的信息痹栖。
410 如果請求的資源已永久刪除,服務器就會返回此響應瞭空。
411 服務器不接受不含有效內容長度標頭字段的請求揪阿。
412 服務器未滿足請求者在請求中設置的其中一個前提條件。
413 服務器無法處理請求咆畏,因為請求實體過大南捂,超出服務器的處理能力。
414 請求的 URI(通常為網址)過長旧找,服務器無法處理溺健。
415 請求的格式不受請求頁面的支持。
416 如果頁面無法提供請求的范圍钮蛛,則服務器會返回此狀態(tài)代碼鞭缭。
417 服務器未滿足”期望”請求標頭字段的要求。
5開頭狀態(tài)碼并不常見魏颓,但是我們應該知道
500 (服務器內部錯誤) 服務器遇到錯誤岭辣,無法完成請求。
501 (尚未實施) 服務器不具備完成請求的功能甸饱。 例如易结,服務器無法識別請求方法時可能會返回此代碼。
502 (錯誤網關) 服務器作為網關或代理柜候,從上游服務器收到無效響應。
503 (服務不可用) 服務器目前無法使用(由于超載或停機維護)躏精。 通常渣刷,這只是暫時狀態(tài)。
504 (網關超時) 服務器作為網關或代理矗烛,但是沒有及時從上游服務器收到請求辅柴。
505 (HTTP 版本不受支持) 服務器不支持請求中所用的 HTTP 協(xié)議版本箩溃。