天天看點

HTTP協定

HTTP(超文本傳輸協定)是一個基于請求與響應模式的、無狀态的、應用層的協定,常基于TCP的連接配接方式,HTTP1.1版本中給出一種持續連接配接的機制,絕大多數的Web開發,都是建構在HTTP協定之上的Web應用。

1、常用的HTTP方法有哪些?

GET: 用于請求通路已經被URI(統一資源辨別符)識别的資源,可以通過URL傳參給伺服器。

POST:用于傳輸資訊給伺服器,主要功能與GET方法類似,但一般推薦使用POST方式。

PUT: 傳輸檔案,封包主體中包含檔案内容,儲存到對應URI位置。

HEAD: 獲得封包首部,與GET方法類似,隻是不傳回封包主體,一般用于驗證URI是否有效。

DELETE:删除檔案,與PUT方法相反,删除對應URI位置的檔案。

OPTIONS:查詢相應URI支援的HTTP方法。

2、GET方法與POST方法的差別

差別一:get重點在從伺服器上擷取資源,post重點在向伺服器發送資料;

差別二:get傳輸資料是通過URL請求,以field(字段)= value的形式,置于URL後,并用"?"連接配接,多個請求資料間用"&"連接配接,如http://127.0.0.1/Test/login.action?name=admin&password=admin,這個過程使用者是可見的;

post傳輸資料通過Http的post機制,将字段與對應值封存在請求實體中發送給伺服器,這個過程對使用者是不可見的;

差別三:Get傳輸的資料量小,因為受URL長度限制,但效率較高;Post可以傳輸大量資料,是以上傳檔案時隻能用Post方式;

差別四:get是不安全的,因為URL是可見的,可能會洩露私密資訊,如密碼等;post較get安全性較高;

差別五:get方式隻能支援ASCII字元,向伺服器傳的中文字元可能會亂碼。post支援标準字元集,可以正确傳遞中文字元。

3、HTTP請求封包與響應封包格式

請求封包包含三部分:

a、請求行:包含請求方法、URI、HTTP版本資訊

b、請求首部字段

c、請求内容實體

響應封包包含三部分:

a、狀态行:包含HTTP版本、狀态碼、狀态碼的原因短語

b、響應首部字段

c、響應内容實體

4、常見的HTTP相應狀态碼

傳回的狀态

1xx:訓示資訊--表示請求已接收,繼續處理

2xx:成功--表示請求已被成功接收、了解、接受

3xx:重定向--要完成請求必須進行更進一步的操作

4xx:用戶端錯誤--請求有文法錯誤或請求無法實作

5xx:伺服器端錯誤--伺服器未能實作合法的請求

200:請求被正常處理

204:請求被受理但沒有資源可以傳回

206:用戶端隻是請求資源的一部分,伺服器隻對請求的部分資源執行GET方法,相應封包中通過Content-Range指定範圍的資源。

301:永久性重定向

302:臨時重定向

303:與302狀态碼有相似功能,隻是它希望用戶端在請求一個URI的時候,能通過GET方法重定向到另一個URI上

304:請求沒有的内容沒有修改,傳回服務端資源副本

307:臨時重定向,與302類似,隻是強制要求使用POST方法

400:請求封包文法有誤,伺服器無法識别

401:請求需要認證

403:請求的對應資源禁止被通路

404:伺服器無法找到對應資源

500:伺服器内部錯誤

503:伺服器正忙

5、HTTP1.1版本新特性

a、預設持久連接配接節省通信量,隻要用戶端服務端任意一端沒有明确提出斷開TCP連接配接,就一直保持連接配接,可以發送多次HTTP請求

b、管線化,用戶端可以同時發出多個HTTP請求,而不用一個個等待響應

c、斷點續傳原理

6、常見HTTP首部字段

a、通用首部字段(請求封包與響應封包都會使用的首部字段)

Date:建立封包時間

Connection:連接配接的管理

Cache-Control:緩存的控制

Transfer-Encoding:封包主體的傳輸編碼方式

b、請求首部字段(請求封包會使用的首部字段)

Host:請求資源所在伺服器

Accept:可處理的媒體類型

Accept-Charset:可接收的字元集

Accept-Encoding:可接受的内容編碼

Accept-Language:可接受的自然語言

c、響應首部字段(響應封包會使用的首部字段)

Accept-Ranges:可接受的位元組範圍

Location:令用戶端重新定向到的URI

Server:HTTP伺服器的安裝資訊

d、實體首部字段(請求封包與響應封包的的實體部分使用的首部字段)

Allow:資源可支援的HTTP方法

Content-Type:實體主類的類型

Content-Encoding:實體主體适用的編碼方式

Content-Language:實體主體的自然語言

Content-Length:實體主體的的位元組數

Content-Range:實體主體的位置範圍,一般用于發出部分請求時使用

7、HTTP的缺點與HTTPS

a、通信使用明文不加密,内容可能被竊聽

b、不驗證通信方身份,可能遭到僞裝

c、無法驗證封包完整性,可能被篡改

HTTPS就是HTTP加上加密處理(一般是SSL安全通信線路)+認證+完整性保護

8、HTTP優化

利用負載均衡優化和加速HTTP應用

利用HTTP Cache來優化網站