02-撩課JavaEE-Http請求與響應
阿新 • • 發佈:2018-11-09
一、什麼是協議
約束雙方規範的一個準則
二、什麼是HTTP協議
HTTP,超文字傳輸協議(HyperText Transfer Protocol)
是網際網路上應用最為廣泛的一種網路協議
所有的WWW檔案都必須遵守這個標準
設計HTTP最初的目的是為了提供一種釋出和接收HTML頁面的方法
約束請求與響應的歸規則
三、HTTP組成部分
- 請求
- 響應
- 請求與響應都是成對存在的
四、請求的傳送方式
- 通過瀏覽器的位址列
- 通過html當中的form表單
- 通過a連結的href
- src屬性
五、一個完整的請求包括:請求行、請求頭、請求體
請求行
請求行以一個方法符號開頭,以空格分開,後面跟著請求的URI和協議的版本
其中 Method表示請求方法;
Request-URI是一個統一資源識別符號;
HTTP-Version表示請求的HTTP協議版本;
請求方式:POST、GET
請求的資源:/Myxq/login.html?username=myxq&pwd=1234
協議版本:
HTTP/1.0,傳送請求,建立一次連線,獲得一個web資源,連線斷開
HTTP/1.1,傳送請求,建立一次連線,獲得多個web資源,保持連線。
請求頭
請求頭是客戶端傳送給伺服器端的一些資訊
使用鍵值對錶示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型別。檔案型別的一種描述方式 `text/html` ,`html`檔案 `text/css`,`css`檔案 `text/javascript`,`js`檔案 `image`,所有圖片檔案 `Accept-Encoding`:瀏覽器通知伺服器,瀏覽器支援的資料壓縮格式。如:GZIP壓縮】 `Accept-Language`:瀏覽器通知伺服器,瀏覽器支援的語言 自動的把客戶端的資訊傳送給伺服器
請求體
當請求方式是post的時,請求體會有請求的引數
如果請求方式為get,那麼請求引數不會出現在請求體中,會拼接在url地址後面
六、一個完整的響應包括:響應行、響應頭、響應體
響應行
伺服器響應給客戶端瀏覽器的狀態碼
根據不同的狀態碼可以看出此次請求的結果如何
Http協議狀態碼
`200` :請求成功
302 :請求重定向
304 :請求資源沒有改變,訪問本地快取。
404 :請求資源不存在。通常是使用者路徑編寫錯誤,也可能是伺服器資源已刪除。
500 :伺服器內部錯誤。通常程式拋異常。
其它狀態碼
成功
200 OK
201 已建立
202 接收
203 非認證資訊
204 無內容
205 重置內容
206 部分內容
重定向
300 多路選擇
301 永久轉移
302 暫時轉移
303 參見其它
304 未修改(`Not Modified`)
305 使用代理
客戶方錯誤
400 錯誤請求(`Bad Request`)
401 未認證
402 需要付費
403 禁止(`Forbidden`)
404 未找到(`Not Found`)
405 方法不允許
406 不接受
407 需要代理認證
408 請求超時
409 衝突
410 失敗
411 需要長度
412 條件失敗
413 請求實體太大
414 請求URI太長
415 不支援媒體型別
伺服器錯誤
500 伺服器內部錯誤
501 未實現(`Not Implemented`)
502 閘道器失敗
504 閘道器超時
響應頭
伺服器端將資訊以鍵值對的形式返回給客戶端
常見請求頭
`Location`:指定響應的路徑,需要與狀態碼302配合使用,完成跳轉
`Content-Type`:響應正文的型別(MIME型別)
`Content-Disposition`:通過瀏覽器以下載方式解析正文
`Set-Cookie`:伺服器向瀏覽器寫入cookie
`Content-Encoding`:伺服器使用的壓縮格式
`Content-length`:響應正文的長度
`Refresh`:定時重新整理
`Server`:伺服器名稱,預設值:`Apache-Coyote/1.1`。
可以通過conf/server.xml配置進行修改
`Last-Modified`:伺服器通知瀏覽器,檔案的最後修改時間
自動的把伺服器端的資訊傳給客戶端
響應體
響應體是伺服器回寫給客戶端的頁面正文
瀏覽器將正文載入到記憶體
然後解析渲染顯示頁面內容
8種請求型別
1.`OPTIONS`:返回伺服器針對特定資源所支援的HTTP請求方法,
也可以利用向web伺服器傳送‘*’的請求來測試伺服器的功能性
2.`HEAD`:請求指定的頁面資訊,並返回頭部資訊
3.`GET`:請求指定的頁面資訊,並返回實體主體
4.`POST`:向指定資源提交資料進行處理請求
5.`PUT`:向指定資源位置上傳其最新內容
6.`DELETE`:請求伺服器刪除Request-URL所標識的資源
7.`TRACE`:回顯伺服器收到的請求,主要用於測試或診斷
8.`CONNECT`:HTTP/1.1協議中預留給能夠將連線改為管道方式的代理伺服器。
常用兩種GET請求與POST請求方式區別
1.GET
GET 方法向頁面請求傳送引數
地址和引數資訊中間用 ? 字元分隔
http://www.itlike.com/hello?key1=value1&key2=value2
查詢字串會顯示在位址列的URL中,
不安全,請不要使用GET請求提交敏感資料
GET 方法有大小限制:請求字串中最多隻能有 1024 個字元
GET請求能夠被快取
GET請求會儲存在瀏覽器的瀏覽記錄中
可以新增書籤
編碼型別為application/x-www-form-urlencoded
只允許ASCII字元型別,不能用二進位制流
點選重新整理時,不會有反應
GET請求主要用以獲取資料
2.POST
POST 方法向頁面請求傳送引數
使用POST方法時,查詢字串在POST資訊中單獨存在,
和HTTP請求一起傳送到伺服器
編碼型別為:application/x-www-form-urlencoded or multipart/form-data.
請為二進位制資料使用multipart編碼
沒有歷史記錄
引數型別沒有限制,可以是字串也可以是二進位制流
資料不會顯示在位址列中
也不會快取下來或儲存在瀏覽記錄中,所以看POST求情比GET請求安全
但也不是最安全的方式。如需要傳送敏感資料,請使用加密方式傳輸
查詢字串不會顯示在位址列中
Post傳輸的資料量大,可以達到2M,而Get方法由於受到URL長度限制,
只能傳遞大約1024位元組.
Post就是為了將資料傳送到伺服器段,Get就是為了從伺服器段取得資料
博文全套 視訊講解 點選以下連結檢視
https://study.163.com/course/courseMain.htm?courseId=1005981003&share=2&shareId=1028240359