1. 程式人生 > >HTTP必知必會——常見面試題總結

HTTP必知必會——常見面試題總結

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相應狀態碼

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請求,而不用一個個等待響應



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優化