HTTP學習備忘。
GET /demo01 HTTP/1.1
Host: localhost:9090
Connection: keep-alive
Cache-Control: max-age=0
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36
Accept:text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8
Accept-Encoding: gzip, deflate, br
Accept-Language: zh-CN,zh;q=0.9
Cookie: JSESSIONID=91B17CEC38787603CD1C26447126CD8E
解讀:
1.請求行
HTTP/1.1
http1.0 當瀏覽器客戶端和伺服器建立連線之後,只能傳送一起請求,一次請求連線後關閉。
http1.1 可以傳送多次請求。
測試:如果一個html裡面包含了3張圖片,那麼http協議每張圖片都要連線一次,如圖;
原因是使用了src標籤,引用了另外的資源。
/demo01
請求資源。
URL
URI:統一資源標記符。/demo01 可以使https協議,也可以是files資源,可以標記任何資源,不含協議。
關係:URI+協議+(主機,埠,使用者資訊等) = URL
GET
請求方式:Get,Post,Head,Trace,Put,Connect,Delete
常用方式:get,post
表單提交
<form action=”url” method=”get/post”></form>
Get:引數會顯示在位址列中,提交引數資料有限制(不超過1kb),不完全
格式:?name=123&pwd=1334
GET /testMethod.html?name=123&pwd=1231&%E6%8F%90%E4%BA%A4=%E6%8F%90%E4%BA%A4 HTTP/1.1
Post:引數不會顯示
POST /testMethod.html HTTP/1.1
name=123&pwd=123&%E6%8F%90%E4%BA%A4=%E6%8F%90%E4%BA%A4(實體內容)
比較:
Get會將資料快取起來,post不能進行管道化傳輸
Get用於讀,post用於更新資料,比較好。
本質區別,get是安全的,冪等的,post是不安全,不冪等的。因為這個才導致了get方法快取,post不快取,get方法快post方法慢,因為讀操作的安全性高。
2.請求頭
Accept:資料型別,意思是瀏覽器可以接受的資料型別
Accept-Charset:瀏覽器接受的編碼格式
Accept-Encoding:瀏覽器接受的資料壓縮格式
Accept-Language:瀏覽器接受的語言
Host:(引數必須)當前請求訪問的目標地址(主機:埠)
If-Modified-Since:瀏覽器最後的快取時間
Referer:當前請求來自於哪裡
User-Agent:瀏覽器型別
Cookie:瀏覽器儲存的cookie資訊
Connection:close/keep-Alive:一次連線/保持連線
3.servlet編碼獲取請求頭。(Tomcat將http請求的那些都已經打包成HttpServletRequest類。
)
3.2 響應
HTTP/1.1 200
Content-Type: text/html;charset=utf-8
Content-Length: 32
Date: Fri, 16 Nov 2018 07:01:58 GMT
解讀:
1.響應行
HTTP/1.1 版本號
200 狀態碼
2.響應頭
Location 表示重定向的地址
Server 表示伺服器型別
Refresh 定時重新整理
Content-disposition 告訴瀏覽器以下載方式開啟資源
Set-cookie 伺服器傳送給瀏覽器的cookie資訊
Expires
Cache-control
Pragma 以上三個都是通知瀏覽器不進行快取
3.實體內容