什么是http協(xié)議?有什么特點(diǎn)?有哪些狀態(tài)碼?
原文合集地址如下,有需要的朋友可以關(guān)注
本文地址
合集地址
@
301和302的區(qū)別
401與403的區(qū)別
什么是HTTP協(xié)議
HTTP(Hypertext Transfer Protocol)是一種用于傳輸超文本的應(yīng)用層協(xié)議,用于在客戶端和服務(wù)器之間進(jìn)行通信。HTTP 協(xié)議定義了 Web 客戶端和服務(wù)器之間互相通信的格式和規(guī)則,是互聯(lián)網(wǎng)信息交換的基礎(chǔ)
HTTP是基于請求-響應(yīng)模型的協(xié)議,客戶端發(fā)送HTTP請求到服務(wù)器,服務(wù)器處理請求并返回相應(yīng)的HTTP響應(yīng)。
HTTP使用URL(Uniform Resource Locator)來標(biāo)識(shí)要獲取的資源的位置。客戶端通過URL指定要請求的資源,例如網(wǎng)頁、圖像、視頻等。
HTTP協(xié)議通常使用TCP/IP作為傳輸協(xié)議,通過端口號(hào)80進(jìn)行通信。
HTTP協(xié)議是無狀態(tài)的,服務(wù)器不會(huì)保存之前請求的任何狀態(tài)信息。為了維護(hù)會(huì)話狀態(tài),可以使用Cookie和Session等機(jī)制。
HTTP 使用統(tǒng)一資源標(biāo)識(shí)符(Uniform Resource Identifier)來定位要訪問的資源。 最常見的 URI 即 URL,比如 https://www.example.com/index.html。
HTTP協(xié)議的特點(diǎn)
簡單:HTTP的請求和響應(yīng)都是由文本構(gòu)成,易于閱讀和理解。它使用簡單的命令集來完成通信。
可擴(kuò)展:HTTP的頭部允許添加自定義的字段,可以根據(jù)需求擴(kuò)展協(xié)議。
無連接:每個(gè)HTTP請求都是獨(dú)立的,服務(wù)器在處理完請求后會(huì)斷開與客戶端的連接。這種無連接的特性可以減輕服務(wù)器的負(fù)載,但也會(huì)增加連接的建立和關(guān)閉的開銷。
無狀態(tài):服務(wù)器不會(huì)保存之前請求的狀態(tài)信息,每個(gè)請求都是相互獨(dú)立的。這意味著每個(gè)請求都需要包含所有必要的信息,例如身份驗(yàn)證憑據(jù)等。
支持緩存:HTTP支持客戶端和服務(wù)器之間的緩存機(jī)制,可以減少數(shù)據(jù)傳輸量和提高性能。
HTTP協(xié)議常用方法
GET
用于獲取資源
只請求資源,不修改資源
可以緩存
冪等操作
有長度限制
參數(shù)通過查詢字符串傳遞
POST
用于創(chuàng)建資源
可以創(chuàng)建新的資源,也可以修改資源
不安全,不可緩存
不冪等
沒有長度限制
參數(shù)通過請求體傳遞
PUT
用于替換資源
整個(gè)替換資源,或創(chuàng)建指定URI的資源
不安全,可緩存
冪等操作
沒有長度限制
參數(shù)通過請求體傳遞
PATCH
用于部分更新資源
只更新資源的一部分
不安全,不可緩存
不冪等
沒有長度限制
參數(shù)通過請求體傳遞
DELETE
用于刪除資源
刪除指定的資源
不安全,不可緩存
冪等操作
沒有請求體
HEAD
與GET方法相同,但只返回報(bào)文頭
獲取報(bào)文首部以確定資源狀態(tài)及元數(shù)據(jù)
對性能和資源消耗最小
OPTIONS
用于查詢支持的方法
可以查詢服務(wù)器對特定資源支持的HTTP方法
冪等操作
HTTP常見錯(cuò)誤碼:
當(dāng)客戶端與服務(wù)器進(jìn)行HTTP通信時(shí),可能會(huì)遇到各種錯(cuò)誤碼。以下是HTTP錯(cuò)誤碼的更多詳細(xì)列舉,按照不同的錯(cuò)誤類別劃分:
1XX 信息性狀態(tài)碼(Informational)
100 Continue:請求已成功收到,客戶端應(yīng)繼續(xù)發(fā)送請求的其余部分。
101 Switching Protocols:服務(wù)器已理解客戶端的協(xié)議升級請求,并將其切換到新協(xié)議。
2XX 成功狀態(tài)碼(Success)
200 OK:請求成功,服務(wù)器成功處理了請求。
201 Created:請求成功,服務(wù)器成功創(chuàng)建了新的資源。
202 Accepted:請求已接受,但尚未處理完成。
204 No Content:請求成功,但響應(yīng)報(bào)文中沒有實(shí)體的主體部分。
3XX 重定向狀態(tài)碼(Redirection)
300 Multiple Choices:請求的資源有多個(gè)位置可供選擇。
301 Moved Permanently:請求的資源已永久移動(dòng)到新位置。
302 Found:請求的資源暫時(shí)移動(dòng)到其他位置。
304 Not Modified:客戶端緩存的資源未修改,可以使用緩存的版本。
4XX 客戶端錯(cuò)誤狀態(tài)碼(Client Errors)
400 Bad Request:服務(wù)器無法理解客戶端發(fā)送的請求。
401 Unauthorized:請求需要身份驗(yàn)證,但客戶端未提供有效的身份驗(yàn)證信息。
403 Forbidden:服務(wù)器拒絕了請求,客戶端沒有訪問所請求資源的權(quán)限。
404 Not Found:請求的資源不存在于服務(wù)器上。
405 Method Not Allowed:請求方法不被允許。
5XX 服務(wù)器錯(cuò)誤狀態(tài)碼(Server Errors)
500 Internal Server Error:服務(wù)器在處理請求時(shí)遇到了錯(cuò)誤。
501 Not Implemented:服務(wù)器不支持客戶端請求的功能或方法。
502 Bad Gateway:作為代理或網(wǎng)關(guān)的服務(wù)器從上游服務(wù)器接收到無效的響應(yīng)。
503 Service Unavailable:服務(wù)器暫時(shí)無法處理請求,通常由于過載或維護(hù)。
504 Gateway Timeout:作為代理或網(wǎng)關(guān)的服務(wù)器在等待上游服務(wù)器的響應(yīng)時(shí)超時(shí)。
301和302的區(qū)別
301和302是HTTP協(xié)議中的重定向狀態(tài)碼,用于指示請求的資源已經(jīng)被移動(dòng)到新的位置。它們之間的區(qū)別如下:
301 Moved Permanently(永久重定向):
當(dāng)服務(wù)器返回301狀態(tài)碼時(shí),它表示請求的資源已經(jīng)永久移動(dòng)到了一個(gè)新的位置。
客戶端在收到301響應(yīng)后,應(yīng)該更新其鏈接指向新的URL,并將以后的請求發(fā)送到新的URL。
搜索引擎會(huì)更新它們的索引,將舊的URL替換為新的URL。
使用301重定向時(shí),瀏覽器會(huì)自動(dòng)將用戶重定向到新的URL,用戶可能會(huì)察覺到網(wǎng)頁地址的變化。
302 Found(臨時(shí)重定向):
當(dāng)服務(wù)器返回302狀態(tài)碼時(shí),它表示請求的資源暫時(shí)移動(dòng)到了一個(gè)新的位置。
客戶端在收到302響應(yīng)后,應(yīng)該繼續(xù)使用原始的URL發(fā)送請求。
搜索引擎會(huì)繼續(xù)將索引指向原始的URL,而不是新的URL。
使用302重定向時(shí),瀏覽器會(huì)自動(dòng)將用戶重定向到新的URL,用戶可能不會(huì)察覺到網(wǎng)頁地址的變化。
總結(jié):
301表示永久重定向,要求客戶端更新書簽和鏈接,搜索引擎將索引指向新的URL。
302表示臨時(shí)重定向,客戶端應(yīng)該繼續(xù)使用原始URL發(fā)送請求,搜索引擎繼續(xù)索引原始URL。
在實(shí)際使用中,301常用于網(wǎng)站結(jié)構(gòu)調(diào)整或更改域名等情況,而302常用于臨時(shí)重定向,例如網(wǎng)站維護(hù)或臨時(shí)轉(zhuǎn)移資源。
若不確定應(yīng)該使用301還是302時(shí),可以考慮使用302,因?yàn)樗粫?huì)對搜索引擎的索引產(chǎn)生永久性影響。
401與403的區(qū)別
401 Unauthorized(未授權(quán))和403 Forbidden(禁止訪問)是HTTP協(xié)議中的客戶端錯(cuò)誤狀態(tài)碼,用于指示客戶端請求的資源的訪問權(quán)限問題。它們之間的區(qū)別如下:
401 Unauthorized(未授權(quán)):
當(dāng)服務(wù)器返回401狀態(tài)碼時(shí),表示客戶端請求需要進(jìn)行身份驗(yàn)證才能訪問資源。
這個(gè)狀態(tài)碼要求客戶端提供有效的身份驗(yàn)證憑據(jù)(例如用戶名和密碼)以便服務(wù)器驗(yàn)證其身份。
通常,在收到401響應(yīng)后,客戶端會(huì)彈出身份驗(yàn)證對話框,要求用戶提供憑據(jù)以重新發(fā)送請求。
403 Forbidden(禁止訪問):
客戶端提供的身份驗(yàn)證憑據(jù)無效或缺失。
客戶端的身份驗(yàn)證憑據(jù)有效,但沒有足夠的權(quán)限來訪問特定資源。
服務(wù)器設(shè)置了訪問控制列表(ACL)或其他訪問限制規(guī)則,拒絕客戶端訪問資源。
當(dāng)服務(wù)器返回403狀態(tài)碼時(shí),表示客戶端被服務(wù)器禁止訪問請求的資源。
這個(gè)狀態(tài)碼表明客戶端沒有足夠的權(quán)限或認(rèn)證來訪問資源。
403狀態(tài)碼可以在以下情況下出現(xiàn):
總結(jié):
401表示未授權(quán),要求客戶端進(jìn)行身份驗(yàn)證,用于需要身份驗(yàn)證的資源。
403表示禁止訪問,客戶端被服務(wù)器拒絕訪問請求的資源,通常是由于缺乏權(quán)限、身份驗(yàn)證問題或服務(wù)器的訪問限制。
在實(shí)際應(yīng)用中,服務(wù)器可以根據(jù)具體的需求和場景來返回適當(dāng)?shù)臓顟B(tài)碼,以便客戶端能夠理解并采取相應(yīng)的操作。401狀態(tài)碼通常用于需要身份驗(yàn)證的資源,而403狀態(tài)碼用于明確拒絕訪問的情況。