介紹HTTP協議的請求與響應
0.HTTP是什麼
超文字傳輸協議(HyperText Transfer Protocol)
1.http協議的位置
2.Http協議的組成
3. Http請求
*html檔案中表單標籤<form>的method屬性:post和get的區別
Get:提交時在位址列顯示提交內容
Post:位址列看不到內容,但http請求了(可以在IE中看抓包)
編輯一個form.html的表單頁面,如下。
點選提交按鈕,在IE中httpcatch的抓包如下。
1)請求行
請求方式:POST、GET
請求的資源:/DemoEE/form.html
協議版本:HTTP/1.1(一般都是)
HTTP/1.0,傳送請求,建立一次連線,獲得一個web資源,連線斷開。
HTTP/1.1,傳送請求,建立一次連線,獲得多個web資源,保持連線。
2)請求頭
請求頭是客戶端傳送給伺服器端的一些資訊,使用鍵值對錶示key:value
3)請求體
當請求方式是post的時,請求體有請求的引數,格式如下:
username=zhangsan&password=123
如果請求方式為get,那麼請求引數不會出現在請求體中,會拼接在url地址後面
http://localhost:8080...?username=zhangsan&password=123
*能看到請求體,提交方式就是post,看不到就是get;get的請求資料在請求行中;
*判斷客戶端是什麼瀏覽器,看http請求頭User-Agent裡的瀏覽器:MSIE,FireFox等
4. Http響應
1)響應行
Http協議
狀態碼:
常用的狀態碼如下:
200 :請求成功。
302 :請求重定向。
304 :請求資源沒有改變,訪問本地快取。
404 :請求資源不存在。通常是使用者路徑編寫錯誤,也可能是伺服器資源已刪除。
500 :伺服器內部錯誤。通常程式拋異常。
狀態資訊:狀態資訊是根據狀態碼變化而變化的
*302重定向:訪問一個網站,但跳到了另一個網站;
304拿本地快取:訪問過某網站,資源存到本地,若下次訪問,資源沒改過,就訪問本地的。
404:一般是客戶端錯誤,地址輸錯
500:一般是服務端錯誤,程式碼錯誤
*304中判斷資源是否被修改過?
判斷:Last-Modified最後修改時間與If-Modified-Since上一次的修改時間 作比較,一樣就是沒修改;If-Modified-Since比Last-Modified時間早,就是修改過了
2)響應頭
響應也都是鍵值對形式,伺服器端將資訊以鍵值對的形式返回給客戶端
3)響應體
響應體是伺服器回寫給客戶端的頁面正文,瀏覽器將正文載入到記憶體,然後解析渲染,顯示頁面內容