超文本傳輸協議,構建與
TCP/IP
協議之上,默認端口號爲80,處於網絡體系結構的最頂層應用層上,Http協議採用的是請求/響應
的工做方式。Http是無鏈接無狀態的。chrome
Q1:怎麼理解Http是無鏈接無狀態的json
無鏈接
是指限制每次鏈接只處理一個請求。服務器處理完客戶的請求,並收到客戶的應答後,即斷開鏈接。採用這種方式能夠節省傳輸時間。瀏覽器
無狀態
是指協議對於事務處理沒有記憶能力,服務器不知道客戶端是什麼狀態。即咱們給服務器發送 HTTP 請求以後,服務器根據請求,會給咱們發送數據過來,可是,發送完,不會記錄任何信息。這就代表每一個請求都是獨立的。緩存
Http的這兩個特性的優缺點:安全
優勢在於解放了服務器,每一次請求「點到爲止」不會形成沒必要要鏈接佔用。bash
缺點在於每次請求會傳輸大量重複的內容信息。服務器
Cookie
和Session
是用來保持Http鏈接的兩種技術。網絡
Http在應用層經過報文的方式來交換數據,分爲
請求報文
和響應報文
加密
Http的請求報文由請求行,請求頭,請求體
組成spa
請求行:聲明瞭請求方法,主機域名,資源路徑和協議版本
請求頭:包括一些訪問的域名、用戶代理、Cookie等信息
請求體:Http請求的數據
請求方法
Get:從服務器讀取數據
Post:爲服務器添加信息
Put:爲指定的URL下添加一個文檔
Delete:刪除指定URL所標誌的信息
Q2:Http的Get和Post請求方式有什麼區別
Get可提交的數據量收到URL長度的限制,URL的長度最可能是2048個字符。Post請求是沒有長度的限制的。
Get請求的數據類型只容許Ascll字符,Post能夠是任何類型
Get請求的安全性較差,由於數據參數是直接拼接在URL後面的,可見。Post數據封裝在Http的請求體中,瀏覽器中沒有緩存。
Get請求適用於數據量較小,而且數據不敏感的狀況。Post正好相反
採用
heade : value
的方式
存放須要發送給服務器的數據信息
請求體有三種使用方式:
數據交換:請求體能夠任意類型,好比json串,不過服務器須要解析
鍵值對:Get請求數據每一個鍵值對經過&
拼接在URL後面,鍵與值之間用=
鏈接
分部分形式:
POST http://www.example.com HTTP/1.1
Content-Type:multipart/form-data; boundary=----WebKitFormBoundaryrGKCBY7qhFd3TrwA
------WebKitFormBoundaryrGKCBY7qhFd3TrwA
Content-Disposition: form-data; name="text"
title
------WebKitFormBoundaryrGKCBY7qhFd3TrwA
Content-Disposition: form-data; name="file"; filename="chrome.png"
Content-Type: image/png
PNG ... content of chrome.png ...
------WebKitFormBoundaryrGKCBY7qhFd3TrwA--
複製代碼
請求體被分爲多個部分,boundary 用於分割不一樣的字段,爲了不與正文內容重複。而後接着一個空行 接 內容,最後以
--boundary-- 結束
boundary:分割線
包括狀態行,響應頭和響應體
狀態行:包括協議版本Version、狀態碼Status Code、狀態碼描述
響應頭:包括搭建服務器的軟件,發送響應的時間,迴應數據的格式等信息
響應體:響應的具體數據
200 OK 客戶端請求成功
301 Moved Permanently 請求永久重定向
302 Moved Temporarily 請求臨時重定向
304 Not Modified 文件未修改,能夠直接使用緩存的文件。
400 Bad Request 因爲客戶端請求有語法錯誤,不能被服務器所理解。
401 Unauthorized 請求未經受權。這個狀態代碼必須和WWW-Authenticate報頭域一塊兒使用
403 Forbidden 服務器收到請求,可是拒絕提供服務。服務器一般會在響應正文中給出不提供服務的緣由
404 Not Found 請求的資源不存在,例如,輸入了錯誤的URL
500 Internal Server Error 服務器發生不可預期的錯誤,致使沒法完成客戶端的請求。
503 Service Unavailable 服務器當前不可以處理客戶端的請求,在一段時間以後,服務器可能會恢復正常。
複製代碼
Q3:Http1.0和Http1.1的區別有哪些
Http1.1比Http1.0升級了以下地方
引入了持久鏈接,意思就是在一個TCP鏈接中能夠傳送多個Http的請求和響應。在請求頭中添加Connection: Keep-Alive
開啓
多個請求和響應能夠同時進行
引入更加多的請求頭和響應頭
Q4:Http和Https的區別
Http處在應用層,Https處在傳輸層
Http明文傳輸,Https經過ssl加密和身份認證
Http默認80端口,Https默認443端口