HTTP學習總結整理

一、瞭解HTTP

1.1HTTP原理

當我們在網頁上輸入一個網址(URL)時,Web頁面當然不能憑空顯示出來。根據Web瀏覽器地址欄中指定的URL,Web瀏覽器從Web服務器端獲取文件資源等信息,從而顯示Web頁面。
Web使用一種名爲HTTP的協議作爲規範,完成從客戶端到服務端等一系列運作流程。而協議是指規則的約定。可以說,Web是建立在HTTP(超文本傳輸協議)協議上通信的。

1.2客戶端與服務器端

類似通過發送請求服務器資源的Web瀏覽器或者其他應用程序等,都可以稱作客戶端;而接受到客戶端請求後,響應客戶端,返回給哭護短響應資源等稱作服務器端

1.3爲何要有應用層?

通過學習完TCP/IP,我們知道數據能從客戶端進程經過選擇跨網絡傳送到服務器端進程,可是僅僅把數據從A端發到B端就完了嗎?就像我們在淘寶上賣完東西后,用完還要給賣家評論打分。我們把數據從A端B端只是完成了快遞的功能,而兩端還要對數據進行加工處理或者使用,所以我們還需要一層協議,這層協議只關心應用細節,不關心通信細節。這就是我們的HTTP協議解決的事情。
在這裏插入圖片描述

1.4認識URL

在這裏插入圖片描述
使用http:或https:等協議方案名獲取訪問資源時要指定協議類型。不區分字母大小寫,最後附一個冒號(😃

登陸信息(認證)

指定用戶名和密碼作爲從服務器端獲取資源時必要的登錄信息(身份認證)。此項是可選項。

服務器地址

使用絕對URI必須指定待訪問的服務器地址。地址可以是類似hackr.jp這種DNS可解析的名稱,或是192.168.1.1這類的IPv4地址名,還可以是[0:0:0:0:0:0:1]這樣用方括號括起來的IPv6地址名。

服務器端口號

指定服務器連接的網絡端口號。此項也是可選項,若用戶省略則自動使用默認端口號。

帶層次的文件路徑

指定服務器上的文件路徑來定位特指的資源。

查詢字符串

針對已指定的文件路徑內的資源,可以使用查詢字符串傳入任意參數。此項可選。

片段標識符

使用片段標識符通常可標記出已獲取資源中的子資源。但在RFC中並沒有明確規定其使用方法。該項也爲可選項。

二、深入學習HTTP

1.HTTP協議格式

在這裏插入圖片描述

1.1HTTP請求

在這裏插入圖片描述

  • 首行:[方法] + [URL] + [版本]
  • Header:請求的 屬性,冒號分割的鍵值對,每組屬性之間使用\n分隔,遇到空行表示Header部分結束
  • Body:空行後面的內容都是Body,Body允許爲空字符串,如果Body存在,則在Header中會有一個Content-Length屬性來表示Body的長度

1.2HTTP響應

在這裏插入圖片描述

  • 首行:[版本號] + [狀態碼] + [狀態碼解釋]
  • Header: 請求的屬性,冒號分割的鍵值對;每組屬性之間是用\n來分隔,遇到空行這表示Header部分結束
  • Body:空行後面的內容都是Body。Body允許爲空字符串。如果Body存在,則在Header中會有一個Content-Length屬性來表示Body的長度;如果服務器返回一個了html頁面,那麼html頁面內容就是在body中。

2.HTTP常見的方法

方法 說明 支持的HTTP協議版本
GET 獲取資源 1.0、1.1
POST 傳輸實體主體 1.0、1.1
PUT 傳輸文件 1.0、1.1
HEAD 獲得報文首部 1.0、1.1
DELETE 刪除文件 1.0、1.1
OPTIONS 詢問支持的方法 1.1
TRACE 追蹤路徑 1.1
CONNECT 要求用隧道協議連接代理 1.1
LINK 建立和資源相關的聯繫 1.0
UNLINE 斷開連接關係 1.0

其中最常用的就是GET和POST方法。

3.HTTP的狀態碼

狀態碼 類別 原因短語
1XX 信息狀態碼 接受的請求正在處理
2XX 成功狀態碼 請求正常處理完畢
3XX 重定向狀態碼 需要進行附加操作以完成請求
4XX 客戶端服務錯誤狀態碼 服務器無法處理請求
5XX 服務器錯誤狀態碼 服務器處理請求出錯

例如:
200:服務器正確處理完請求,並返回響應
301/302/307:重定向,服務端響應3XX重定向狀態碼,location包頭,之後瀏覽器會自行跳轉到location的網址。
400:客戶端錯誤
404:找不到資源
405:不支持的客戶端請求方法
500:服務器錯誤
502:網關錯誤

4.HTTP常見的Header

  • Content-Type: 數據類型(text/html等)
  • Content-Length: Body的長度
  • Host: 客戶端告知服務器, 所請求的資源是在哪個主機的哪個端口上;
  • User-Agent: 聲明用戶的操作系統和瀏覽器版本信息; referer: 當前頁面是從哪個頁面跳轉過來的;
  • location: 搭配3xx狀態碼使用, 告訴客戶端接下來要去哪裏訪問;
  • Cookie: 用於在客戶端存儲少量信息. 通常用於實現會話(session)的功能;

5.Cookie和Session

5.1Cookie

我們在訪問有的網上資源的時候往往需要經過認證的賬戶才能訪問,而且要一直保持在線狀態,所以,cookie是一種在瀏覽器端解決的方案,將登陸認證之後的用戶信息保存在本地瀏覽器中,後面每次發起http請求,都會自動攜帶該信息,就能達到認證用戶,報紙用戶在線的作用。
在這裏插入圖片描述

5.2 Session

將用戶敏感信息放到本地瀏覽器中,能解決一定的問題,但是又引進了新的安全問題,一旦cookie丟失,用戶信息泄露,很容易造成跨站攻擊,所以有了另一種解決方法,將用戶敏感信息保存至服務器,而服務器本身採用md5算法或者相關算法生成唯一值(session id),將該值保存在客戶端瀏覽器,隨後,客戶端的後續請求,瀏覽器都會自動攜帶該id,進而再在服務器端認證,進而達到狀態保持的效果。
在這裏插入圖片描述

5.3 Cookie和Session的區別

  • Cookie以文本文件格式存儲在瀏覽器中,而session存儲在服務端
  • 因爲每次發起Http請求,都要攜帶有效Cookie信息,所以Cookie一般都有大小限制,以防止增加網絡壓力,一 般不超過4k
  • 可以輕鬆訪問cookie值但是我們無法輕鬆訪問會話值,因此session方案更安全

6 HTTP和HTTPS的區別

  • https協議需要到ca申請證書,一般免費證書較少,因而需要一定費用。
  • http是超文本傳輸協議,信息是明文傳輸,https則是具有安全性的ssl加密傳輸協議。
  • http和https使用的是完全不同的連接方式,用的端口也不一樣,前者是80,後者是443。
  • http的連接很簡單,是無狀態的;HTTPS協議是由SSL+HTTP協議構建的可進行加密傳輸、身份認證的網絡協議,比http協議安全。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章