柚子快報(bào)邀請(qǐng)碼778899分享:網(wǎng)絡(luò)協(xié)議 HTTP協(xié)議詳解
柚子快報(bào)邀請(qǐng)碼778899分享:網(wǎng)絡(luò)協(xié)議 HTTP協(xié)議詳解
HTTP協(xié)議:是W3C制定的一種超文本傳輸協(xié)議。(是一種通信協(xié)議:發(fā)送消息的模板提前被制定好。)就是服務(wù)器和瀏覽器互相發(fā)送消息的模板。
HTTP協(xié)議包括:
1、請(qǐng)求協(xié)議
瀏覽器 向 WEB服務(wù)器發(fā)送數(shù)據(jù)的時(shí)候,這個(gè)發(fā)送的數(shù)據(jù)需要遵循一套標(biāo)準(zhǔn),這套標(biāo)準(zhǔn)中規(guī)定了發(fā)送的數(shù)據(jù)具體格式。
2、響應(yīng)協(xié)議
WEB服務(wù)器 向 瀏覽器發(fā)送數(shù)據(jù)的時(shí)候,這個(gè)發(fā)送的數(shù)據(jù)需要遵循一套標(biāo)準(zhǔn),這套標(biāo)準(zhǔn)中規(guī)定了發(fā)送的數(shù)據(jù)具體格式。
HTTP的請(qǐng)求協(xié)議
請(qǐng)求行
第一部分:請(qǐng)求的方式method(有7種)
get(常用的)
post(常用的)
delete
put
head
options(預(yù)檢請(qǐng)求)
trace
第二部分:URI
什么是URI? 統(tǒng)一資源標(biāo)識(shí)符。代表網(wǎng)絡(luò)中某個(gè)資源的名字。但是通過(guò)URI是無(wú)法定位資源的。
什么是URL?統(tǒng)一資源定位符。代表網(wǎng)絡(luò)中某個(gè)資源的位置,同時(shí),通過(guò)URL是可以定位到該資的。
第三部分:HTTP協(xié)議的版本號(hào)
請(qǐng)求頭
HTTP請(qǐng)求頭包含了HTTP請(qǐng)求的元數(shù)據(jù),用于告訴服務(wù)器如何處理請(qǐng)求和發(fā)送響應(yīng)。下面是一些常見(jiàn)的HTTP請(qǐng)求頭字段及其含義:
User-Agent:標(biāo)識(shí)客戶(hù)端瀏覽器、操作系統(tǒng)及版本號(hào)等信息。
Accept:表示客戶(hù)端可以接受的數(shù)據(jù)類(lèi)型。例如:"text/html"、"application/xml"等。
Accept-Encoding:表示客戶(hù)端可以接受的數(shù)據(jù)壓縮格式。例如:"gzip"、"deflate"、"br"等。
Accept-Language:表示客戶(hù)端可以接受的語(yǔ)言類(lèi)型。例如:"en-US"、"zh-CN"等。
Cache-Control:控制緩存的行為。例如:"no-cache"、"max-age=3600"等。
Connection:表示客戶(hù)端與服務(wù)器之間連接的類(lèi)型。例如:"keep-alive"、"close"等。
Host:表示請(qǐng)求的服務(wù)器的域名或IP地址和端口號(hào)。
Referer:表示請(qǐng)求來(lái)源的URL地址。
Cookie:表示客戶(hù)端發(fā)送給服務(wù)器的Cookie信息。
Authorization:表示客戶(hù)端發(fā)送的身份驗(yàn)證憑證信息。
Content-Length:表示請(qǐng)求體的長(zhǎng)度。
Content-Type:表示請(qǐng)求體的類(lèi)型。例如:"application/x-www-form-urlencoded"、"application/json"等。
Content-Type
HTTP請(qǐng)求頭中的 Content-Type 字段用于指定請(qǐng)求體的媒體類(lèi)型(media type),即請(qǐng)求體的數(shù)據(jù)格式。下面是一些常見(jiàn)的 Content-Type 值:
text/plain:純文本,沒(méi)有格式。
text/html:HTML 格式。
application/json:JSON 格式。
application/xml:XML 格式。
application/x-www-form-urlencoded:經(jīng)過(guò) URL 編碼的表單數(shù)據(jù)。
multipart/form-data:用于上傳文件、圖片和二進(jìn)制數(shù)據(jù)的表單格式。
image/png:PNG 圖像格式。
image/jpeg:JPEG 圖像格式。
audio/mpeg:MPEG 音頻格式。
video/mp4:MPEG-4 視頻格式。
空白行
用來(lái)區(qū)分"請(qǐng)求頭"和"請(qǐng)求體"的
請(qǐng)求體
瀏覽器向服務(wù)器發(fā)送的具體數(shù)據(jù).
HTTP請(qǐng)求協(xié)議的具體報(bào)文:GET請(qǐng)求
GET /Servlet05/get?username=lucy&userpwd=123 HTTP/1.1 請(qǐng)求行
Host: localhost:8080 請(qǐng)求頭
Connection: keep-alive
sec-ch-ua: " Not A;Brand";v="99", "Chromium";v="98", "Google Chrome";v="98"
sec-ch-ua-mobile: ?0
sec-ch-ua-platform: "Windows"
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/98.0.4758.102 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9
Sec-Fetch-Site: same-origin
Sec-Fetch-Mode: navigate
Sec-Fetch-User: ?1
Sec-Fetch-Dest: document
Referer: http://localhost:8080/Servlet05/index.html
Accept-Encoding: gzip, deflate, br
Accept-Language: zh-CN,zh;q=0.9
Cookie: Idea-69292d60=aab66041-a5ec-4720-bd7d-906d53381ec2
空白行
請(qǐng)求體
HTTP請(qǐng)求協(xié)議的具體報(bào)文:POST請(qǐng)求
POST /Servlet05/post HTTP/1.1 請(qǐng)求行
Host: localhost:8080 請(qǐng)求頭
Connection: keep-alive
Content-Length: 27
Cache-Control: max-age=0
sec-ch-ua: " Not A;Brand";v="99", "Chromium";v="98", "Google Chrome";v="98"
sec-ch-ua-mobile: ?0
sec-ch-ua-platform: "Windows"
Upgrade-Insecure-Requests: 1
Origin: http://localhost:8080
Content-Type: application/x-www-form-urlencoded
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/98.0.4758.102 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9
Sec-Fetch-Site: same-origin
Sec-Fetch-Mode: navigate
Sec-Fetch-User: ?1
Sec-Fetch-Dest: document
Referer: http://localhost:8080/Servlet05/index.html
Accept-Encoding: gzip, deflate, br
Accept-Language: zh-CN,zh;q=0.9
Cookie: Idea-69292d60=aab66041-a5ec-4720-bd7d-906d53381ec2
空白行
username=jack&userpwd=11111 請(qǐng)求體
HTTP的響應(yīng)協(xié)議
狀態(tài)行
由三部分組成:
第一部分:協(xié)議版本號(hào)(HTTP/1.1)
第二部分:狀態(tài)碼(HTTP協(xié)議中規(guī)定的響應(yīng)狀態(tài)號(hào)。不同的響應(yīng)結(jié)果對(duì)應(yīng)不同的號(hào)碼。)
200 表示請(qǐng)求響應(yīng)成功,正常結(jié)束。
404表示訪(fǎng)問(wèn)的資源不存在,通常是因?yàn)橐词悄懵窂綄?xiě)錯(cuò)了,要么是路徑寫(xiě)對(duì)了,但是服務(wù)器中對(duì)應(yīng)的資源并沒(méi)有啟動(dòng)成功??傊?04錯(cuò)誤是前端錯(cuò)誤。
405表示前端發(fā)送的請(qǐng)求方式與后端請(qǐng)求的處理方式不一致時(shí)發(fā)生:
比如:前端是POST請(qǐng)求,后端的處理方式按照get方式進(jìn)行處理時(shí),發(fā)生405
比如:前端是GET請(qǐng)求,后端的處理方式按照post方式進(jìn)行處理時(shí),發(fā)生405
500表示服務(wù)器端的程序出現(xiàn)了異常。一般會(huì)認(rèn)為是服務(wù)器端的錯(cuò)誤導(dǎo)致的。
以4開(kāi)始的,一般是瀏覽器端的錯(cuò)誤導(dǎo)致的。
以5開(kāi)始的,一般是服務(wù)器端的錯(cuò)誤導(dǎo)致的。
第三部分:狀態(tài)的描述信息
ok 表示正常成功結(jié)束。
not found 表示資源找不到。
響應(yīng)頭
Content-Type
響應(yīng)的內(nèi)容類(lèi)型,告訴瀏覽器這個(gè)響應(yīng)的內(nèi)容類(lèi)型,瀏覽器就知道怎么處理。
Content-Type:text/html;charset=UTF-8?
告訴客戶(hù)端,資源文件的類(lèi)型,還有字符編碼,客戶(hù)端就會(huì)通過(guò)utf-8對(duì)資源進(jìn)行解碼,然后對(duì)資源進(jìn)行html解析。通常我們會(huì)看到有些網(wǎng)站是亂碼的,往往就是服務(wù)器端沒(méi)有返回正確的編碼。
// 設(shè)置響應(yīng)頭,告訴瀏覽器這是一個(gè)字節(jié)流,瀏覽器處理字節(jié)流的默認(rèn)方式就是下載 response.setContentType("application/octet-stream");
Content-Disposition
// Content-Disposition 是 HTTP 協(xié)議中的一個(gè)頭部字段,用于指示文件的名稱(chēng)和下載方式。
// inline 表示文件應(yīng)該在瀏覽器中直接顯示,而不是下載。
//attachment 表示文件應(yīng)該下載到本地。
response.setHeader("Content-Disposition", "attachment; filename=" + fileName);
- 響應(yīng)的內(nèi)容長(zhǎng)度
- 響應(yīng)的時(shí)間
- ....
空白行
區(qū)分"響應(yīng)頭"和"響應(yīng)體"
響應(yīng)體
響應(yīng)體就是服務(wù)器響應(yīng)給瀏覽器的正文,這些內(nèi)容是一個(gè)長(zhǎng)的字符串,這個(gè)字符串被瀏覽器解析渲染,解釋并執(zhí)行,最終展示出效果。
HTTP響應(yīng)報(bào)文
HTTP/1.1 200 ok 狀態(tài)行
Content-Type: text/html;charset=UTF-8 響應(yīng)頭
Content-Length: 160
Date: Thu, 24 Feb 2022 00:58:40 GMT
Keep-Alive: timeout=20
Connection: keep-alive
空白行
響應(yīng)體
from get servlet
柚子快報(bào)邀請(qǐng)碼778899分享:網(wǎng)絡(luò)協(xié)議 HTTP協(xié)議詳解
參考鏈接
本文內(nèi)容根據(jù)網(wǎng)絡(luò)資料整理,出于傳遞更多信息之目的,不代表金鑰匙跨境贊同其觀(guān)點(diǎn)和立場(chǎng)。
轉(zhuǎn)載請(qǐng)注明,如有侵權(quán),聯(lián)系刪除。