一、HTTP概述html
1.一、什麼是HTTP?
它是Hyper Text Transfer Protocol的縮寫。超文本傳輸協議。
它是客戶瀏覽器和web服務器之間的一種一問一答的規則。問答機制/握手機制。web
1.二、HTTP版本
1.0版本:
建立鏈接(TCP/IP)
發送請求
接收響應
關閉鏈接
1.1版本:
建立鏈接(TCP/IP)
發送請求1
接收響應1
發送請求2
接收響應2........
請求超時(手動關閉)
1.1版本比1.0版本多了幾個消息頭
1.三、特殊說明
當瀏覽器發現script標籤,link標籤和img標籤時,會自動發出請求。瀏覽器
二、HTTP主要組成緩存
2.一、請求部分
請求行
請求消息頭
請求正文服務器
GET /myapp/2.html HTTP/1.1 //如請求行app
Host:"localhost:8080"編碼
User-Agent:"Mozilla/5.0 (Windows NT 6.1; WOW64; rv:51.0) Gecko/20100101 Firefox/51.0"url
Accept:"*/*"spa
Accept-Language:"zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3"code
Accept-Encoding:"gzip, deflate"
Referer:"http://localhost:8080/jeecg/logController.do?statisticTabs&isIframe"
Cookie:"JEECGINDEXSTYLE=hplus; JSESSIONID=051CDE615BD426D727B41B2481B4A1C3; ZINDEXNUMBER=1990"
Connection:"keep-alive"
2.二、響應部分
響應行
響應消息頭
響應正文
HTTP/1.1 200 OK // 響應行
Cache-Control:"no-cache, no-store"
Content-Language:"zh-CN"
Content-Type:"text/html;charset=UTF-8"
Date:"Wed, 17 May 2017 02:42:27 GMT"
Expires:"Thu, 01 Jan 1970 00:00:00 GMT"
Pragma:"no-cache"
Server:"Apache-Coyote/1.1"
Transfer-Encoding:"chunked"
以下圖:
2.三、消息頭的共性
(1)頭名稱首字母大寫,多個單詞每一個單詞的首字母都大寫。
(2)多個單詞用-分隔
(3)名稱和值之間用:分隔
(4)值和:之間有一個空格
(5)多個值之間用,分隔
(6),和值之間也有一個空格
(7)兩個頭之間用回車分隔
MIME類型:多用途互聯網郵件擴展類型
MIME:(Multipurpose Internet Mail Extensions)
三、請求部分詳解
請求行:GET /myapp/2.html HTTP/1.1
GET:請求的方式。GET和POST
/myapp/2.html:請求資源URI。
URI:Uniform Resource Identifier 統一資源標識符
URL:Uniform Resource Locator 統一資源定位符
URL: http://localhost:8080/jeecg/logController.do?statisticTabs&isIframe
協議 主機 端口 URI
HTTP/1.1:協議的版本
請求消息頭:客戶瀏覽器給服務器的暗語
Accept:
告知服務器,瀏覽器所支持的MIME類型。
Accept-Encoding:
告知服務器,瀏覽器所支持的壓縮編碼格式。經常使用的一個GZIP壓縮。
Accept-Language:
告知服務器,瀏覽器所支持的語言。例如zh_CN,en_US等等。
Referer:
告知服務器,當前請求的來源。注意:只有有來源的纔會有此消息頭。
做用:
1.投放廣告。
2.防盜鏈。
Content-Type:
告知服務器,請求正文的MIME類型。
Content-Length:
告知服務器,請求正文的長度。
User-Agent:
客戶瀏覽器的相關信息
Connection: Keep-Alive
鏈接狀態:保持鏈接
If-Modified-Since:
客戶端緩存的最後更新時間。
Cookie:
會話管理相關。(很是重要)
請求的正文:
何時有,何時沒有,當什麼屬性取什麼值的時候,請求的正文是什麼體現形式?
POST方式:username=test&password=123 key=value&key=value 在請求體中
GET方式: username=test&password=123 key=value&key=value 在地址欄中
表單輸入域中,只要有name屬性的時候,正文內容就會被提交。若是沒有name屬性,則不會被提交.
正文的體現形式不受請求的方式控制。
表單的第三個重要屬性:enctype屬性:控制編碼表單的MIME類型
enctype是有默認值的:application/x-www-form-urlencoded 它對應的表單正文的體現形式就是key=value
enctype取值爲multipart/form-data時,請求正文的體現形式是:
-----------------------------7df1592a410fc
Content-Disposition: form-data; name="username"
test
-----------------------------7df1592a410fc
Content-Disposition: form-data; name="password"
123
-----------------------------7df1592a410fc
Content-Disposition: form-data; name="fileone"; filename="C:\Users\zhy\Desktop\請求部分.jpg"
Content-Type: image/pjpeg
??
-----------------------------7df1592a410fc
四、響應部分詳解 響應行:HTTP/1.1 200 OK HTTP/1.1:使用的協議及版本 200:響應狀態碼 經常使用的狀態碼: 200 :一切都OK 302/307 :重定向 304 :請求資源未改變,使用緩存 404 :請求資源未找到 500 :服務器內部錯誤 OK:狀態碼描述 響應消息頭:服務器給客戶瀏覽器的暗語 Location: 重定向的地址 Server: 服務器相關信息 Content-Type: 告知瀏覽器,響應正文的MIME類型 Content-Length: 告知瀏覽器,響應正文的長度 Content-Encoding 告知瀏覽器,響應正文使用的壓縮編碼格式。 Content-Language: 告知瀏覽器,響應正文語言。 Content-Disposition: 告知瀏覽器,如下載的方式打開。 Refresh: 定時刷新 Last-Modified: 服務器資源的最後修改時間。當瀏覽器發出請求時,會使用客戶端緩存最後更新時間和該消息頭的值進行比較。若是一致則使用緩存。若是不一致,發送新的請求。 Set-Cookie: 會話管理相關(很是重要) Expires:-1:設置緩存時間。當設置爲-1時,表示不要緩存。時間是以毫秒爲單位。 Catch-Control: no-catch(1.1)//針對http協議1.1版本 Pragma:no-catch(1.0)//針對http協議1.0版本 響應的正文: 和你在瀏覽器右鍵查看源文件,看到的內容是如出一轍的。