請求與響應
HTTP
超文本傳輸協議(英文:HyperText Transfer Protocol,縮寫:HTTP)是一種用於分散式、協作式和超媒體信息系統的應用層協議[1]。HTTP是萬維網的數據通信的基礎。
設計HTTP最初的目的是為了提供一種發布和接收HTML頁面的方法。通過HTTP或者HTTPS協議請求的資源由統一資源標識符(Uniform Resource Identifiers,URI)來標識。
HTTP的發展是由蒂姆·伯納斯-李於1989年在歐洲核子研究組織(CERN)所發起。HTTP的標準制定由萬維網協會(World Wide Web Consortium,W3C)和互聯網工程任務組(Internet Engineering Task Force,IETF)進行協調,最終發布了一系列的RFC,其中最著名的是1999年6月公布的 RFC 2616,定義了HTTP協議中現今廣泛使用的一個版本——HTTP 1.1。
請求與響應
訪問=伺服器+HTTP協議+瀏覽器
* 瀏覽器負責發起請求
* 伺服器在 80 埠接收請求
* 伺服器負責返回內容(響應)
* 瀏覽器負責下載響應內容
HTTP 的作用就是指導瀏覽器和伺服器如何進行溝通。
瀏覽器請求
向指定的資源發出「顯示」請求,一般由四個部分組成。
組成規律:
* 第1部分的動詞有 GET(取之:向伺服器發出「顯示資源」請求)、 POST(予之:向伺服器上傳信息)、 PUT(整體更新)、 PATCH(局部更新) 、DELETE HEAD OPTIONS 等;這裡的路徑包括「查詢參數」,但不包括「錨點」(伺服器不看這個,瀏覽器看),如果沒有寫路徑,路徑默認為 /
* 第 2 部分中的 Content-Type 標註了第 4 部分的格式(任何想告訴伺服器的信息除了數據都在這裡)
* 第3部分為了區分2與4部分,永遠都是一個回車(
)
* 第4部分可能有可能無,動詞為post的時候有,動詞為get的時候無
伺服器響應
組成規律:
* 所有HTTP響應的第一行都是狀態行,依次是當前HTTP版本號,3位數字組成的狀態代碼,以及描述狀態的短語,彼此由空格分隔。 等;這裡的路徑包括「查詢參數」,但不包括「錨點」(伺服器不看這個,瀏覽器看),如果沒有寫路徑,路徑默認為 /
* 第 2 部分中的 Content-Type 標註了第 4 部分的格式(任何想告訴伺服器的信息除了數據都在這裡)
,content-Length則代表的是反饋的內容大小:17931位元組。
* 第3部分為了區分2與4部分,永遠都是一個回車(
)
* 第4部分代表要下載的內容
響應狀態碼
狀態代碼的第一個數字代表當前響應的類型:
* 1xx消息——請求已被伺服器接收,繼續處理
* 2xx成功——請求已成功被伺服器接收、理解、並接受(200get,204post,表示創建成功)
* 3xx重定向——需要後續操作才能完成這一請求
(301:網址已經搬走了;302:暫時搬走了,我還會回
來這裡噠;)
* 4xx請求錯誤——請求含有詞法錯誤或者無法被執行(客戶端錯誤)
* 5xx伺服器錯誤——伺服器在處理某個正確請求時發生錯誤(網頁發生錯誤)
用curl發出請求
語法:curl -s -v -H -- "https://www.baidu.com"(get請求動作)
語法:curl -X POST -s -v -H -- "https://www.baidu.com"(post請求動作)
用 Chrome 查看響應
* 打開 Network
* 輸入網址
* 選中第一個響應
* 查看 Response Headers,點擊「view source」,點擊「view source」,點擊「view source」
* 你會看到響應的前兩部分
* 查看 Response 或者 Preview,你會看到響應的第 4 部分
*
![](https://user-gold-cdn.xitu.io/2018/5/9/1634322f1dce7b91?w=926&h=418&f=png&s=45996)
一、請求
請求一般由以下四個部分組成:
1 動詞 路徑 協議/版本
2 Key1: value1
2 Key2: value2
2 Key3: value3
2 Content-Type: application/x-www-form-urlencoded
2 Host: www.baidu
參考
1.維基百科
2.《HTTP》 作者:Lichee_3be1
鏈接:[https://www.jianshu.com/p/28f7251f4579]()
來源:簡書
推薦閱讀:
※你還在花半小時試妝嗎?未來可能不需要了。Omote電子化妝技術,瞬間易容術。
※絲綢般的流暢 海信H11圖賞
※豫章書院這件事情有多少人知道?
※世界上最長的浮橋誕生了,但為什麼是浮橋?
※計算機界奠基性的工作真的已經被做完了嗎?