溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶(hù)服務(wù)條款》

HTTP協(xié)議基本知識(shí)有哪些

發(fā)布時(shí)間:2021-12-27 17:50:47 來(lái)源:億速云 閱讀:134 作者:iii 欄目:大數(shù)據(jù)

本篇內(nèi)容主要講解“HTTP協(xié)議基本知識(shí)有哪些”,感興趣的朋友不妨來(lái)看看。本文介紹的方法操作簡(jiǎn)單快捷,實(shí)用性強(qiáng)。下面就讓小編來(lái)帶大家學(xué)習(xí)“HTTP協(xié)議基本知識(shí)有哪些”吧!

HTTP工作原理

1. 用戶(hù)通過(guò)瀏覽器進(jìn)行了一個(gè)操作,比如輸入網(wǎng)址并回車(chē),或者是點(diǎn)擊鏈接,接著瀏覽器獲取了這個(gè)事件。2. 瀏覽器向服務(wù)端發(fā)出 TCP 連接請(qǐng)求。3. 服務(wù)程序接受瀏覽器的連接請(qǐng)求,并經(jīng)過(guò) TCP 三次握手建立連接。4. 瀏覽器將請(qǐng)求數(shù)據(jù)打包成一個(gè) HTTP 協(xié)議格式的數(shù)據(jù)包。5. 瀏覽器將該數(shù)據(jù)包推入網(wǎng)絡(luò),數(shù)據(jù)包經(jīng)過(guò)網(wǎng)絡(luò)傳輸,最終達(dá)到端服務(wù)程序。6. 服務(wù)端程序拿到這個(gè)數(shù)據(jù)包后,同樣以 HTTP 協(xié)議格式解包,獲取到客戶(hù)端的意圖。7. 得知客戶(hù)端意圖后進(jìn)行處理,比如提供靜態(tài)文件或者調(diào)用服務(wù)端程序獲得動(dòng)態(tài)結(jié)果。8. 服務(wù)器將響應(yīng)結(jié)果(可能是 HTML 或者圖片等)按照 HTTP 協(xié)議格式打包。9. 服務(wù)器將響應(yīng)數(shù)據(jù)包推入網(wǎng)絡(luò),數(shù)據(jù)包經(jīng)過(guò)網(wǎng)絡(luò)傳輸最終達(dá)到到瀏覽器。10. 瀏覽器拿到數(shù)據(jù)包后,以 HTTP 協(xié)議的格式解包,然后解析數(shù)據(jù),假設(shè)這里的數(shù)據(jù)是 HTML。11. 瀏覽器將 HTML 文件展示在頁(yè)面上。那我們想要探究的 Tomcat 和 Jetty 作為一個(gè) HTTP 服務(wù)器,在這個(gè)過(guò)程中都做了些什么事情呢?主要是接受連接、解析請(qǐng)求數(shù)據(jù)、處理請(qǐng)求和發(fā)送響應(yīng)這幾個(gè)步驟。這里請(qǐng)你注意,可能有成千上萬(wàn)的瀏覽器同時(shí)請(qǐng)求同一個(gè) HTTP 服務(wù)器,因此 Tomcat 和 Jetty 為了提高服務(wù)的能力和并發(fā)度,往往會(huì)將自己要做的幾個(gè)事情并行化,具體來(lái)說(shuō)就是使用多線程的技術(shù)。

HTTP協(xié)議基本知識(shí)有哪些

Tomcat做了主要是接受連接、解析請(qǐng)求數(shù)據(jù)、處理請(qǐng)求和發(fā)送響應(yīng)這幾個(gè)步驟。HTTP協(xié)議更具體的以后我會(huì)在網(wǎng)絡(luò)協(xié)議分類(lèi)中具體總結(jié)。

Cookie 和 Session

HTTP 協(xié)議有個(gè)特點(diǎn)是無(wú)狀態(tài),請(qǐng)求與請(qǐng)求之間是沒(méi)有關(guān)系的。Cookie 是 HTTP 報(bào)文的一個(gè)請(qǐng)求頭,Web 應(yīng)用可以將用戶(hù)的標(biāo)識(shí)信息或者其他一些信息(用戶(hù)名等)存儲(chǔ)在 Cookie 中。用戶(hù)經(jīng)過(guò)驗(yàn)證之后,每次 HTTP 請(qǐng)求報(bào)文中都包含 Cookie,這樣服務(wù)器讀取這個(gè) Cookie 請(qǐng)求頭就知道用戶(hù)是誰(shuí)了。Cookie 本質(zhì)上就是一份存儲(chǔ)在用戶(hù)本地的文件,里面包含了每次請(qǐng)求中都需要傳遞的信息。

由于 Cookie 以明文的方式存儲(chǔ)在本地,而 Cookie 中往往帶有用戶(hù)信息,這樣就造成了非常大的安全隱患。Session 可以理解為服務(wù)器端開(kāi)辟的存儲(chǔ)空間,里面保存了用戶(hù)的狀態(tài),用戶(hù)信息以 Session 的形式存儲(chǔ)在服務(wù)端。當(dāng)用戶(hù)請(qǐng)求到來(lái)時(shí),服務(wù)端可以把用戶(hù)的請(qǐng)求和用戶(hù)的 Session 對(duì)應(yīng)起來(lái)。瀏覽器在 Cookie 中填充了一個(gè) Session ID 之類(lèi)的字段用來(lái)標(biāo)識(shí)請(qǐng)求。具體工作過(guò)程是這樣的:服務(wù)器在創(chuàng)建 Session 的同時(shí),會(huì)為該 Session 生成唯一的 Session ID,當(dāng)瀏覽器再次發(fā)送請(qǐng)求的時(shí)候,會(huì)將這個(gè) Session ID 帶上,服務(wù)器接受到請(qǐng)求之后就會(huì)依據(jù) Session ID 找到相應(yīng)的 Session,找到 Session 后,就可以在 Session 中獲取或者添加內(nèi)容了。而這些內(nèi)容只會(huì)保存在服務(wù)器中,發(fā)到客戶(hù)端的只有 Session ID,這樣相對(duì)安全,也節(jié)省了網(wǎng)絡(luò)流量,因?yàn)椴恍枰?Cookie 中存儲(chǔ)大量用戶(hù)信息。Session是在服務(wù)器端程序運(yùn)行的過(guò)程中創(chuàng)建的,不同語(yǔ)言實(shí)現(xiàn)的應(yīng)用程序有不同的創(chuàng)建 Session 的方法。在 Java 中,是 Web 應(yīng)用程序在調(diào)用 HttpServletRequest 的 getSession 方法時(shí),由 Web 容器(比如 Tomcat)創(chuàng)建的。Tomcat 的 Session 管理器提供了多種持久化方案來(lái)存儲(chǔ) Session,通常會(huì)采用高性能的存儲(chǔ)方式,比如 Redis,并且通過(guò)集群部署的方式,防止單點(diǎn)故障,從而提升高可用。同時(shí),Session 有過(guò)期時(shí)間,因此 Tomcat 會(huì)開(kāi)啟后臺(tái)線程定期的輪詢(xún),如果 Session 過(guò)期了就將 Session 失效。

cookie跨域: cookie有兩個(gè)重要屬性:domain字段 :表示瀏覽器訪問(wèn)這個(gè)域名時(shí)才帶上這個(gè)cookie;path字段:表示訪問(wèn)的URL是這個(gè)path或者子路徑時(shí)才帶上這個(gè)cookie??缬蛘f(shuō)的是,我們?cè)L問(wèn)兩個(gè)不同的域名或路徑時(shí),希望帶上同一個(gè)cookie。

Cookie屬性:

name字段:一個(gè)cookie的名稱(chēng)

value字段:一個(gè)cookie的值

domain字段:可以訪問(wèn)此cookie的域名

path字段:可以訪問(wèn)此cookie的頁(yè)面路徑

Size字段:此cookie大小

http字段:cookie的httponly屬性,若此屬性為T(mén)rue,則只有在http請(qǐng)求頭中會(huì)有此cookie信息,而不能通過(guò)document.cookie來(lái)訪問(wèn)此cookie。

secure字段:設(shè)置是否只能通過(guò)https來(lái)傳遞此條cookie。

expires/Max-Age字段:設(shè)置cookie超時(shí)時(shí)間。如果設(shè)置的值為一個(gè)時(shí)間,則當(dāng)?shù)竭_(dá)該時(shí)間時(shí)此cookie失效。不設(shè)置的話默認(rèn)是session,意思是cookie會(huì)和session一起失效,當(dāng)瀏覽器關(guān)閉(并不是瀏覽器標(biāo)簽關(guān)閉,而是整個(gè)瀏覽器關(guān)閉)后,cookie失效。

到此,相信大家對(duì)“HTTP協(xié)議基本知識(shí)有哪些”有了更深的了解,不妨來(lái)實(shí)際操作一番吧!這里是億速云網(wǎng)站,更多相關(guān)內(nèi)容可以進(jìn)入相關(guān)頻道進(jìn)行查詢(xún),關(guān)注我們,繼續(xù)學(xué)習(xí)!

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI