1.HTTP報文由哪幾部分組成?
請求報文(Request Message)由以下幾部分組成:
- 請求行(Request Line):包含請求方法、請求URL和HTTP協(xié)議版本。
- 請求頭部(Request Headers):包含一系列的鍵值對,用于描述請求的附加信息,如User-Agent、Content-Type等。
- 空行(Blank Line):用于分隔請求頭部和請求體。
- 請求體(Request Body):可選部分,用于傳輸請求的數(shù)據(jù),例如POST請求中的表單數(shù)據(jù)或上傳的文件等。
響應報文(Response Message)由以下幾部分組成:
- 狀態(tài)行(Status Line):包含HTTP協(xié)議版本、狀態(tài)碼和狀態(tài)消息。
- 響應頭部(Response Headers):包含一系列的鍵值對,用于描述響應的附加信息,如Content-Type、Content-Length等。
- 空行(Blank Line):用于分隔響應頭部和響應體。
- 響應體(Response Body):可選部分,用于傳輸響應的數(shù)據(jù),例如HTML網(wǎng)頁、JSON數(shù)據(jù)或文件等。
2.HTTP常見的請求方法有哪些?
GET:獲取資源。用于請求服務器發(fā)送指定資源的內(nèi)容。GET請求是冪等的,即多次請求同一個資源應該返回相同的結(jié)果。
POST:提交數(shù)據(jù)。用于向服務器提交數(shù)據(jù),并請求服務器接受并處理提交的數(shù)據(jù)。POST請求不是冪等的,即多次請求同一個資源可能會導致不同的結(jié)果。
PUT:更新資源。用于向服務器上傳新的內(nèi)容,或者替換指定資源的內(nèi)容。
DELETE:刪除資源。用于請求服務器刪除指定的資源。
HEAD:獲取資源的元信息。與GET方法類似,但只返回響應頭部,不返回實際內(nèi)容。
OPTIONS:獲取服務器支持的HTTP方法。用于請求服務器返回當前資源所支持的HTTP請求方法。
TRACE:回顯服務器收到的請求。用于請求服務器返回收到的請求,用于追蹤和調(diào)試。
CONNECT:建立與服務器的隧道連接。用于請求與目標資源之間建立一條雙向的通信隧道。
?3.HTTP常見的狀態(tài)碼有哪些?
1xx(信息性狀態(tài)碼):表示請求已被接收,繼續(xù)處理。
2xx(成功狀態(tài)碼):表示請求已成功被服務器接收、理解和處理。
- 200 OK:請求成功,返回所請求的資源。
- 201 Created:請求成功,服務器創(chuàng)建了新的資源。
- 204 No Content:請求成功,但響應中不包含實體的主體部分。
3xx(重定向狀態(tài)碼):表示需要進一步操作以完成請求。
- 301 Moved Permanently:請求的資源已永久移動到新的URL。
- 302 Found:請求的資源已臨時移動到新的URL。
- 304 Not Modified:資源未修改,使用緩存的版本。
4xx(客戶端錯誤狀態(tài)碼):表示服務器無法處理客戶端的請求。
- 400 Bad Request:請求無效,服務器無法理解。
- 401 Unauthorized:請求要求身份驗證。
- 404 Not Found:請求的資源不存在。
5xx(服務器錯誤狀態(tài)碼):表示服務器在處理請求時發(fā)生了錯誤。
- 500 Internal Server Error:服務器內(nèi)部錯誤。
- 503 Service Unavailable:服務器暫時無法處理請求,通常是由于過載或維護。
?4.HTTP常見的頭部信息有哪些?
HTTP請求報文的頭部信息包含以下常見字段:
Host:指定請求的目標服務器的主機名和端口號。
User-Agent:標識發(fā)起請求的客戶端應用程序或用戶代理的信息。
Accept:指定客戶端能夠處理的響應內(nèi)容類型。
Accept-Language:指定客戶端優(yōu)先接受的自然語言。
Accept-Encoding:指定客戶端能夠處理的內(nèi)容編碼方式,如gzip、deflate等。
Connection:指定是否保持連接,常見的取值有"keep-alive"和"close"。
Referer:指定當前請求的來源頁面的URL。
Content-Type:指定請求體的媒體類型,常見的取值有"application/x-www-form-urlencoded"和"multipart/form-data"等。
Content-Length:指定請求體的長度。
Authorization:用于身份驗證,包含認證憑據(jù)。
Cookie:包含服務器發(fā)送的Cookie信息。
Cache-Control:指定緩存機制的指令,如"no-cache"、"max-age"等。
If-Modified-Since:指定自從指定日期后,資源是否有修改。
If-None-Match:指定資源的ETag值,用于比較資源是否有修改。
HTTP響應報文的頭部信息包含以下常見字段:
Status-Line:包含HTTP協(xié)議版本、狀態(tài)碼和狀態(tài)消息。
Server:指定響應的服務器軟件名稱和版本號。
Date:指定響應的日期和時間。
Content-Type:指定響應體的媒體類型。
Content-Length:指定響應體的長度。
Content-Encoding:指定響應體的內(nèi)容編碼方式,如gzip、deflate等。
Cache-Control:指定緩存機制的指令,如"no-cache"、"max-age"等。
Last-Modified:指定響應資源的最后修改時間。
ETag:指定響應資源的實體標簽,用于比較資源是否有修改。
Location:指定重定向的目標URL。
Set-Cookie:指定服務器發(fā)送的Cookie信息。
Access-Control-Allow-Origin:指定響應資源允許的跨域請求源。
Expires:指定響應資源的過期時間。
WWW-Authenticate:用于身份驗證,指定服務器要求的認證方式。
?4.HTTP的POST和GET有什么區(qū)別?
數(shù)據(jù)位置:GET請求將參數(shù)包含在URL的查詢字符串中,而POST請求將參數(shù)包含在請求體中。
數(shù)據(jù)長度限制:GET請求對數(shù)據(jù)長度有限制,通常是URL的長度限制,而POST請求沒有固定的長度限制。
安全性:POST請求相對于GET請求更安全,因為POST請求的參數(shù)不會被直接暴露在URL中,而是在請求體中進行傳輸。
緩存:GET請求默認可以被緩存,而POST請求默認不能被緩存。
數(shù)據(jù)類型:GET請求只能進行簡單的數(shù)據(jù)類型傳輸,如文本、數(shù)字等,而POST請求可以傳輸任意類型的數(shù)據(jù),如文本、文件等。
冪等性:GET請求是冪等的,即多次相同的GET請求會返回相同的結(jié)果;而POST請求不是冪等的,多次相同的POST請求可能會產(chǎn)生不同的結(jié)果。
使用場景:GET請求適合用于獲取數(shù)據(jù),如獲取網(wǎng)頁、圖片等;POST請求適合用于提交數(shù)據(jù),如提交表單、上傳文件等。
?5.HTTP和HTTPS的異同點有哪些?
安全性:
- HTTP是明文傳輸協(xié)議,數(shù)據(jù)在傳輸過程中不加密,容易被竊聽和篡改。
- HTTPS通過使用SSL/TLS協(xié)議對數(shù)據(jù)進行加密和身份驗證,保證了傳輸過程中的安全性。
默認端口:
- HTTP默認使用端口80進行通信。
- HTTPS默認使用端口443進行通信。
證書:
- HTTP不需要使用證書。
- HTTPS需要使用SSL/TLS證書,用于服務器身份驗證和加密通信。
連接建立過程:
- HTTP的連接建立過程簡單,只需要進行三次握手即可建立連接。
- HTTPS的連接建立過程相對復雜,需要進行SSL/TLS握手過程,包括證書交換、密鑰協(xié)商等步驟。
性能:
- 由于HTTPS需要進行加密和解密操作,相對于HTTP來說,會增加一定的計算和傳輸開銷,導致性能稍低。
使用場景:
- HTTP適用于一些不需要保密性和完整性的場景,如瀏覽普通網(wǎng)頁等。
- HTTPS適用于對數(shù)據(jù)傳輸安全性要求較高的場景,如進行在線支付、登錄等涉及敏感信息的操作。
6.cookie session和token的區(qū)別
Cookie(HTTP Cookie):
- Cookie是一種在客戶端存儲數(shù)據(jù)的機制,通過在瀏覽器中存儲一小段文本信息。
- 服務器可以通過在響應頭中設置Set-Cookie字段將Cookie發(fā)送給客戶端,客戶端會在后續(xù)的請求中自動將Cookie包含在請求頭中發(fā)送給服務器。
- Cookie可以存儲在客戶端,用于跟蹤用戶的身份認證、會話狀態(tài)等。
- Cookie的大小有限制,每個域名下的Cookie數(shù)量也有限制。
Session:
- Session是一種在服務器端存儲數(shù)據(jù)的機制,用于跟蹤用戶的會話狀態(tài)。
- 服務器在客戶端首次請求時創(chuàng)建一個唯一的Session ID,并將該ID存儲在Cookie中發(fā)送給客戶端。
- 客戶端在后續(xù)的請求中將Session ID通過Cookie或URL參數(shù)發(fā)送給服務器,服務器通過Session ID來識別用戶。
- Session數(shù)據(jù)存儲在服務器端,可以存儲更多的信息,并且相對安全。
Token(令牌):
- Token是一種無狀態(tài)的身份驗證機制,不需要在服務器端存儲用戶信息。
- 在身份驗證成功后,服務器會生成一個Token,并將其發(fā)送給客戶端。
- 客戶端在后續(xù)的請求中將Token包含在請求頭中發(fā)送給服務器,服務器通過驗證Token的有效性來識別用戶。
- Token通常使用數(shù)字簽名或加密算法進行保護,確保其不被篡改。
總的來說,Cookie是在客戶端存儲數(shù)據(jù)的機制,Session是在服務器端存儲數(shù)據(jù)的機制,而Token是一種無狀態(tài)的身份驗證機制。Cookie和Session需要在服務器端進行狀態(tài)管理,而Token不需要在服務器端存儲狀態(tài)信息,因此更適合于分布式系統(tǒng)和無狀態(tài)的API設計。文章來源:http://www.zghlxwxcb.cn/news/detail-824788.html
?文章來源地址http://www.zghlxwxcb.cn/news/detail-824788.html
到了這里,關于軟件測試面試寶典—http的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!