創建時間:6.14
http協議 的位置

1.HTTP是什么
超文本傳輸協議(HyperText Transfer Protocol)
2.Http協議的組成
Http協議由Http請求和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
| 常見請求頭 |
描述 (紅色掌握,其他了解) |
| Referer |
瀏覽器通知服務器,當前請求來自何處。如果是直接訪問,則不會有這個頭。常用於:防盜鏈 |
| If-Modified-Since |
瀏覽器通知服務器,本地緩存的最后變更時間。與另一個響應頭組合控制瀏覽器頁面的緩存。 |
| Cookie |
與會話有關技術,用於存放瀏覽器緩存的cookie信息。 |
| User-Agent |
瀏覽器通知服務器,客戶端瀏覽器與操作系統相關信息 |
| Connection |
保持連接狀態。Keep-Alive 連接中,close 已關閉 |
| Host |
請求的服務器主機名 |
| Content-Length |
請求體的長度 |
| Content-Type |
如果是POST請求,會有這個頭,默認值為application/x-www-form-urlencoded,表示請求體內容使用url編碼 |
| Accept: |
瀏覽器可支持的MIME類型。文件類型的一種描述方式。 MIME格式:大類型/小類型[;參數] 例如: text/html ,html文件 text/css,css文件 text/javascript,js文件 image/*,所有圖片文件 |
| Accept-Encoding |
瀏覽器通知服務器,瀏覽器支持的數據壓縮格式。如:GZIP壓縮 |
| Accept-Language |
瀏覽器通知服務器,瀏覽器支持的語言。各國語言(國際化i18n) |
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)響應頭
響應也都是鍵值對形式,服務器端將信息以鍵值對的形式返回給客戶端
| 常見請求頭 |
描述 |
| Location |
指定響應的路徑,需要與狀態碼302配合使用,完成跳轉。 |
| Content-Type |
響應正文的類型(MIME類型) 取值:text/html;charset=UTF-8 |
| Content-Disposition |
通過瀏覽器以下載方式解析正文 取值:attachment;filename=xx.zip |
| Set-Cookie |
與會話相關技術。服務器向瀏覽器寫入cookie |
| Content-Encoding |
服務器使用的壓縮格式 取值:gzip |
| Content-length |
響應正文的長度 |
| Refresh |
定時刷新,格式:秒數;url=路徑。url可省略,默認值為當前頁。 取值:3;url=www.itcast.cn //三秒刷新頁面到www.itcast.cn |
| Server |
指的是服務器名稱,默認值:Apache-Coyote/1.1。可以通過conf/server.xml配置進行修改。<Connector port="8080" ... server="itcast"/> |
| Last-Modified |
服務器通知瀏覽器,文件的最后修改時間。與If-Modified-Since一起使用。 |
3)響應體
響應體是服務器回寫給客戶端的頁面正文,瀏覽器將正文加載到內存,然后解析渲染,顯示頁面內容
