www.久久久久|狼友网站av天堂|精品国产无码a片|一级av色欲av|91在线播放视频|亚洲无码主播在线|国产精品草久在线|明星AV网站在线|污污内射久久一区|婷婷综合视频网站

當(dāng)前位置:首頁(yè) > > HelloGitHub

導(dǎo)讀:什么是 HTTP?它有什么屬性?我們常用的是什么呢?快來(lái)閱讀本文,將會(huì)為你一一道來(lái)。

什么是 HTTP 協(xié)議?

在了解HTTP之前,我們需要了解什么是網(wǎng)絡(luò)通信模型(也就是我們常說(shuō)的 OSI 模型)

OSI 模型

OSI 模型是對(duì)網(wǎng)絡(luò)中數(shù)據(jù)是如何被傳送和接收的一個(gè)具象化的展示,如下圖展示

在 OSI 中我們所處在最頂層,我們所有的網(wǎng)絡(luò)的行為,數(shù)據(jù)的傳遞都是從頂至下然后在從下至頂完成一次傳遞的。每一層都會(huì)有對(duì)應(yīng)的一些協(xié)議,協(xié)議就好比是數(shù)據(jù)的 '通行證',有些協(xié)議會(huì)把我們的數(shù)據(jù)加密,讓它更安全,有些協(xié)議幫助數(shù)據(jù)建立通道,指明去路。而我們這次要說(shuō)的 HTTP 協(xié)議屬于應(yīng)用層中的協(xié)議,它的主要作用就是傳遞資源,建立通道讓我們更加方便的去訪問(wèn)網(wǎng)絡(luò)資源。資源必須是通過(guò) URL 地址可以訪問(wèn)到的,包括但不限于圖片,數(shù)據(jù),文件等等。

HTTP屬性

我們已經(jīng)知道了 HTTP 協(xié)議在 OSI 中的位置以及功能。那么現(xiàn)在我們就來(lái)看看它神秘面紗下的樣子吧。

HTTP結(jié)構(gòu)

我們稱呼 HTTP 內(nèi)容為報(bào)文,一個(gè) HTTP 由請(qǐng)求報(bào)文和響應(yīng)報(bào)文組成,最方便的報(bào)文查看就是瀏覽器開(kāi)發(fā)者工具的 Network 這一項(xiàng)

以上是訪問(wèn) https://hellogithub.com/ 后查看到的請(qǐng)求報(bào)文 (Request Headers) 和響應(yīng)報(bào)文(Response Headers)。完整的請(qǐng)求就是客戶端發(fā)送請(qǐng)求,服務(wù)器返回響應(yīng),關(guān)閉連接

請(qǐng)求和響應(yīng)的格式長(zhǎng)得差不多,它們都是由:

?一條初始行?零或多條頭信息?一個(gè)空行?一個(gè)可選的消息體組成的

那么現(xiàn)在讓我們進(jìn)一步分析所展示的數(shù)據(jù)吧

General 內(nèi)容展示的是通用頭

Request Url: 請(qǐng)求地址 (目前資源所在的地址)

Request Method: 請(qǐng)求方法,請(qǐng)求方法是使用 HTTP 動(dòng)詞來(lái)對(duì)目標(biāo)資源進(jìn)行操作,常用的請(qǐng)求方法有如下7種

1.GET:用于請(qǐng)求訪問(wèn)已被url識(shí)別的資源,可以通過(guò)url傳參給服務(wù)器2.POST:用于傳輸信息給服務(wù)器3.PUT:傳輸文件,報(bào)文體中包含文件內(nèi)容,保存在對(duì)應(yīng)的url位置4.HEAD:獲得報(bào)文首部,與GET方法相似,只是不返回報(bào)文主體,一般用于驗(yàn)證一個(gè)內(nèi)容是否正常存在,或者url是否有效5.OPTIONS:返回服務(wù)器可用的方法(請(qǐng)求方法)6.TRACE:查看http協(xié)議有沒(méi)被修改。7.DELETE :刪除對(duì)應(yīng)url位置的文件

Status Code: 狀態(tài)碼,不同的狀態(tài)碼代表不同情況,如下羅列一些常用狀態(tài)碼

?1 開(kāi)頭的狀態(tài)碼代表信息響應(yīng)?2 開(kāi)頭表示請(qǐng)求的成功,常見(jiàn)有:200?3 開(kāi)頭的狀態(tài)嗎表示重定向,常見(jiàn)有:304?4 開(kāi)頭的狀態(tài)碼表示客戶端的響應(yīng),常見(jiàn)有:404( Not Found )?5 開(kāi)頭的狀態(tài)碼則代表服務(wù)端的響應(yīng),常見(jiàn)有:500( 服務(wù)器器遇到了問(wèn)題 )

如果過(guò)需要了解詳細(xì) https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Status

Remote Address: 遠(yuǎn)程地址,這個(gè)地址代表的是服務(wù)器所在IP地址

Refer Policy: 這是用來(lái)監(jiān)管哪些訪問(wèn)來(lái)源信息,no-referrer-when-downgrade (默認(rèn)值),意思是在沒(méi)有指定任何策略的情況下用戶代理的默認(rèn)行為。在同等安全級(jí)別的情況下,引用頁(yè)面的地址會(huì)被發(fā)送( HTTPS->HTTPS ),但是在降級(jí)的情況下不會(huì)被發(fā)送 ( HTTPS->HTTP )。

具體請(qǐng)查看—> https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Headers/Referrer-Policy

Response Headers(代表服務(wù)器的響應(yīng)信息)

Connection: keep-alive,這個(gè) header 表示客戶端和服務(wù)器在一次請(qǐng)求和響應(yīng)之后不要關(guān)閉連接

但是為什么要使用這個(gè)頭部呢?原因是在早期的 HTTP 1.0中,每發(fā)出一個(gè)請(qǐng)求都要?jiǎng)?chuàng)建一個(gè)連接,但是創(chuàng)建連接的過(guò)程是一個(gè)損耗資源的過(guò)程,所以在后期的 HTTP/1.0 以及 HTTP/1.1 中引入了重用連接機(jī)制,需要添加該請(qǐng)求頭,而在 HTTP/1.1 中已經(jīng)默認(rèn)是長(zhǎng)連接了。

Content-Encoding: gzip,這個(gè) header ****主要是設(shè)置數(shù)據(jù)壓縮,在 Web 應(yīng)用中我們通常都要打開(kāi)gzip壓縮,這樣使得我們的數(shù)據(jù)體積更小,所占用的帶寬也更小所以達(dá)到了性能優(yōu)化的目的

Content-type: text/html; charset=utf-8,這個(gè) header 表明了資源類型,因?yàn)槲覀冊(cè)L問(wèn)的是網(wǎng)頁(yè)所以類型便是 text-html 而我們?cè)O(shè)置的編碼是 utf-8

Date: 表示報(bào)文創(chuàng)建的日期

Server: nginx,這個(gè) header 表明服務(wù)器類型,nginx 說(shuō)明使用了代理服務(wù)器,也許并不是應(yīng)用真正的服務(wù)器類型

Set-Cookie: 被用來(lái)服務(wù)端向客戶端設(shè)置 cookie

Strict-Transport-Security: 這是一個(gè)安全設(shè)置,表示只有 HTTPS (一種加密的 HTTP 協(xié)議,通??梢源娴?層 OSI 模型的功能)才能訪問(wèn)

Transfer-Encoding: 消息首部指明了將 entity 安全傳遞給用戶所采用的編碼形式。chunked表示數(shù)據(jù)以一系列分塊的形式進(jìn)行發(fā)送

Request Headers(代表客戶端請(qǐng)求信息)

Accept: 請(qǐng)求頭用來(lái)告知客戶端可以處理的內(nèi)容類型,這種內(nèi)容類型用MIME類型來(lái)表示。借助內(nèi)容協(xié)商機(jī)制, 服務(wù)器可以從諸多備選項(xiàng)中選擇一項(xiàng)進(jìn)行應(yīng)用,并使用 Content-Type 應(yīng)答頭通知客戶端它的選擇

Accept-Encoding: 會(huì)將客戶端能夠理解的內(nèi)容編碼方式——通常是某種壓縮算法——進(jìn)行通知。通過(guò)內(nèi)容協(xié)商的方式,服務(wù)端會(huì)選擇一個(gè)客戶端提議的方式,使用并在響應(yīng)報(bào)文首部 Content-Encoding 中通知客戶端該選擇。

Accept-Language: 請(qǐng)求頭允許客戶端聲明它可以理解的自然語(yǔ)言,以及優(yōu)先選擇的區(qū)域方言。

Cashe-Control: 設(shè)置緩存

Cookie: 客戶端傳遞的 cookie

User-Agent: 表明客戶端一些基本設(shè)備信息

結(jié)語(yǔ)

本文中我們學(xué)習(xí)了 OSI 模型,知道了 HTTP 協(xié)議是在模型的那一層,知道了一個(gè)完整的HTTP請(qǐng)求是怎么樣的,然后通過(guò) Chrome DevTools 分析了一個(gè)完整的 HTTP 請(qǐng)求,我們知道了常用的請(qǐng)求方法,常用的網(wǎng)絡(luò)狀態(tài)碼,響應(yīng)頭以及請(qǐng)求頭,還有一些常用到的 header。但是本文介紹的只是HTTP中的一小部分,還有很多有用的 header 等待我們?nèi)グl(fā)現(xiàn),以及還有 HTTP 2.0 版本的激動(dòng)人心的新特性。

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請(qǐng)聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請(qǐng)及時(shí)聯(lián)系本站刪除。
關(guān)閉