兩學(xué)一做網(wǎng)站 新聞?dòng)惺裁垂δ?/h1>
目錄
1.從輸入U(xiǎn)RL到頁(yè)面展示到底發(fā)生了什么?
2.HTTP狀態(tài)碼有哪些?
2.1 2XX(成功狀態(tài)碼)
2.2 3XX(重定向狀態(tài)碼)
2.3 4XX(客戶端錯(cuò)誤狀態(tài)碼)
2.4 5XX(服務(wù)端錯(cuò)誤狀態(tài)碼)
3.HTTP 請(qǐng)求頭中常見的字段有哪些?
4.HTTP和HTTPS有什么區(qū)別?
4.1簡(jiǎn)單介紹
4.2主要區(qū)別
4.3Https的缺點(diǎn)
5.HTTP1.0和HTTP1.1的區(qū)別
6.HTTP1.1和HTTP2.0有什么區(qū)別
7.HTTP2.0和HTTP3.0有什么區(qū)別?
8.URI和URL的區(qū)別是什么?
9.Cookie和Session的區(qū)別?
10.GET和POST的區(qū)別?
1.從輸入U(xiǎn)RL到頁(yè)面展示到底發(fā)生了什么?
-
首先,瀏覽器會(huì)根據(jù)我們輸入的URL地址先在本地域名服務(wù)器(DNS)中查找,如果有緩存,則直接返回IP地址即可。
-
如果本地域名服務(wù)器沒(méi)有緩存,則會(huì)查詢本機(jī)hosts文件中看是否配有對(duì)應(yīng)的IP地址,如果找到,直接返回。
-
如果hosts文件內(nèi)也沒(méi)有,則向網(wǎng)絡(luò)中發(fā)起一個(gè)DNS查詢,可采用遞歸或者迭代查詢。去根、頂級(jí)、權(quán)威域名服務(wù)器上去查.....,查找到了返回給本地域名服務(wù)器,然后告訴給用戶IP地址。
-
瀏覽器根據(jù)IP地址和端口號(hào)與目標(biāo)服務(wù)器建立TCP連接,經(jīng)歷三次握手。
-
建立連接后(HTTP1.1為長(zhǎng)連接),瀏覽器向服務(wù)器發(fā)送一個(gè)HTTP請(qǐng)求,請(qǐng)求獲取網(wǎng)頁(yè)的內(nèi)容。
-
服務(wù)器收到后,處理請(qǐng)求,返回響應(yīng)報(bào)文。
-
瀏覽器接收到后,解析HTML代碼,獲取里面的其他資源,圖片等,再次發(fā)起HTTP請(qǐng)求,直到網(wǎng)頁(yè)完全加載顯示。
-
瀏覽器不需要通信時(shí),可主動(dòng)關(guān)閉TCP連接,或者等待服務(wù)器關(guān)閉請(qǐng)求。
2.HTTP狀態(tài)碼有哪些?
2.1 2XX(成功狀態(tài)碼)
-
200 OK:請(qǐng)求被成功處理。比如我們發(fā)送一個(gè)查詢用戶數(shù)據(jù)的 HTTP 請(qǐng)求到服務(wù)端,服務(wù)端正確返回了用戶數(shù)據(jù)。這個(gè)是我們平時(shí)最常見的一個(gè) HTTP 狀態(tài)碼。
-
201 Created:請(qǐng)求被成功處理并且在服務(wù)端創(chuàng)建了一個(gè)新的資源。比如我們通過(guò) POST 請(qǐng)求創(chuàng)建一個(gè)新的用戶。
-
202 Accepted:服務(wù)端已經(jīng)接收到了請(qǐng)求,但是還未處理。
-
204 No Content:服務(wù)端已經(jīng)成功處理了請(qǐng)求,但是沒(méi)有返回任何內(nèi)容。
2.2 3XX(重定向狀態(tài)碼)
-
301 Moved Permanently:資源被永久重定向了。比如你的網(wǎng)站的網(wǎng)址更換了。
-
302 Found:資源被臨時(shí)重定向了。比如你的網(wǎng)站的某些資源被暫時(shí)轉(zhuǎn)移到另外一個(gè)網(wǎng)址。
2.3 4XX(客戶端錯(cuò)誤狀態(tài)碼)
-
400 Bad Request:發(fā)送的 HTTP 請(qǐng)求存在問(wèn)題。比如請(qǐng)求參數(shù)不合法、請(qǐng)求方法錯(cuò)誤。
-
401 Unauthorized:未認(rèn)證卻請(qǐng)求需要認(rèn)證之后才能訪問(wèn)的資源。
-
403 Forbidden:直接拒絕 HTTP 請(qǐng)求,不處理。一般用來(lái)針對(duì)非法請(qǐng)求。
-
404 Not Found:你請(qǐng)求的資源未在服務(wù)端找到。比如你請(qǐng)求某個(gè)用戶的信息,服務(wù)端并沒(méi)有找到指定的用戶。
-
409 Conflict:表示請(qǐng)求的資源與服務(wù)端當(dāng)前的狀態(tài)存在沖突,請(qǐng)求無(wú)法被處理。
2.4 5XX(服務(wù)端錯(cuò)誤狀態(tài)碼)
-
500 Internal Server Error:服務(wù)端出問(wèn)題了。比如你服務(wù)端處理請(qǐng)求的時(shí)候突然拋出異常,但是異常并未在服務(wù)端被正確處理。
-
502 Bad Gateway:我們的網(wǎng)關(guān)將請(qǐng)求轉(zhuǎn)發(fā)到服務(wù)端,但是服務(wù)端返回的卻是一個(gè)錯(cuò)誤的響應(yīng)。
3.HTTP 請(qǐng)求頭中常見的字段有哪些?
字段 | 含義 |
---|---|
Request URL | 請(qǐng)求地址 |
Request Method | 請(qǐng)求方法 |
status Code | 請(qǐng)求碼 |
Reomte Address | 客戶端主機(jī)的IP地址 |
Date | 發(fā)送日期 |
User-Agent | 瀏覽器身份標(biāo)識(shí)字符串 |
Accept-Encoding | 支持的編碼 |
Accept-Language | 支持的語(yǔ)言 |
scheme | 訪問(wèn)協(xié)議http或https |
4.HTTP和HTTPS有什么區(qū)別?
4.1簡(jiǎn)單介紹
HTTP:最廣泛應(yīng)用的網(wǎng)絡(luò)通信協(xié)議,基于TCP協(xié)議,數(shù)據(jù)傳輸簡(jiǎn)單高效,數(shù)據(jù)傳輸?shù)膬?nèi)容是明文。
HTTPS:HTTP協(xié)議的加強(qiáng)版,是運(yùn)行在SSL/TLS協(xié)議之上的HTTP協(xié)議,其所有傳輸?shù)膬?nèi)容都經(jīng)過(guò)加密,一方面保證數(shù)據(jù)的安全傳輸,另一方面對(duì)訪問(wèn)者增加了安全驗(yàn)證。
注意:TLS是SSL的升級(jí)版,加密采用的是對(duì)稱加密,通信雙方共享唯一密鑰K,這樣代價(jià)比較低。由于需要保證密鑰的保密性,在雙方通信時(shí),需要商量一個(gè)用于對(duì)稱加密的密鑰,但是密鑰不能直接在網(wǎng)絡(luò)通信道中傳輸,這樣是不安全的,所以還需要采用一次非對(duì)稱加密(公鑰加密和私鑰解密的方式)用來(lái)交換對(duì)稱加密的密鑰。關(guān)于密鑰的信任性問(wèn)題是靠CA證書解決的。
4.2主要區(qū)別
1.http和https都是無(wú)狀態(tài)(就是交互之間沒(méi)有記憶功能)的,而https是通過(guò)SSL/TLS協(xié)議加密的,傳輸數(shù)據(jù)更加的安全。
2.http默認(rèn)使用的是80端口,而https默認(rèn)使用的是443端口。
4.3Https的缺點(diǎn)
1.https的TCP握手協(xié)議會(huì)更加的費(fèi)時(shí),會(huì)耗費(fèi)更多服務(wù)器資源。
2.https也并不是完全安全的,可能會(huì)受到DDOS(分布式拒絕服務(wù)攻擊,使被攻擊的網(wǎng)站服務(wù)器存放大量要響應(yīng)的信息,消耗資源,使得服務(wù)癱瘓)的攻擊。
3.SSL證書不是免費(fèi)的,安全級(jí)別越高的費(fèi)用越高。
5.HTTP1.0和HTTP1.1的區(qū)別
-
連接方式:HTTP1.0為短連接,HTTP1.1支持長(zhǎng)連接。
-
Host頭:因?yàn)镈NS允許多個(gè)主機(jī)名綁定到同一個(gè)IP地址,加上Host字段就知道主機(jī)名了。
-
響應(yīng)狀態(tài)碼:HTTP1.1在HTTP1.0的基礎(chǔ)上新加入了大量的狀態(tài)碼。
-
加密:HTTP1.1可以支持SSL/TLS加密。
6.HTTP1.1和HTTP2.0有什么區(qū)別
-
多路復(fù)用:HTTP2.0在同一連接上可以同時(shí)傳輸多個(gè)請(qǐng)求和響應(yīng),在處理多個(gè)請(qǐng)求時(shí)更加的高效。
-
服務(wù)主動(dòng)推送:HTTP2.0可以在客戶端請(qǐng)求一個(gè)資源時(shí),將其他相關(guān)資源一并推送給客戶端,減少了客戶端的請(qǐng)求次數(shù)。
-
二進(jìn)制幀:HTTP2.0使用二進(jìn)制幀進(jìn)行數(shù)據(jù)傳輸,相較于HTTP1.1文本格式的報(bào)文更加的高效。
注意:HTTP1.1和HTTP2.0都與HTTPS有直接關(guān)系。HTTP1.1和HTTP2.0都是HTTP協(xié)議的版本,而HTTPS是在HTTP協(xié)議的基礎(chǔ)上加入了SSL/TLS協(xié)議進(jìn)行加密的協(xié)議。因此,當(dāng)使用HTTPS時(shí),實(shí)際上是在使用HTTP協(xié)議(無(wú)論是HTTP1.1還是HTTP2.0)進(jìn)行加密通信。具體來(lái)說(shuō),HTTP1.1和HTTP2.0可以與HTTPS一起使用,以提供加密和安全通信。在實(shí)際應(yīng)用中,許多網(wǎng)站使用HTTPS來(lái)保護(hù)用戶的個(gè)人信息和其他敏感數(shù)據(jù),而HTTP1.1和HTTP2.0都可以作為HTTPS協(xié)議的一部分來(lái)使用。
7.HTTP2.0和HTTP3.0有什么區(qū)別?
-
傳輸協(xié)議:HTTP2.0是基于TCP協(xié)議實(shí)現(xiàn)的,HTTP3.0采用了QUIC(UDP的升級(jí)版,在其基礎(chǔ)上新增了加密、重傳等功能)協(xié)議來(lái)實(shí)現(xiàn)可靠的傳輸。
-
安全性:HTTP2.0使用TSL協(xié)議進(jìn)行加密,而HTTP3.0基于QUIC協(xié)議,包含了內(nèi)置的加密和身份驗(yàn)證機(jī)制,可以提供更強(qiáng)的安全性。
-
連接建立和錯(cuò)誤恢復(fù):HTTP3.0相較于HTTP2.0在連接建立上更快,也有更好的錯(cuò)誤恢復(fù)機(jī)制。
?
8.URI和URL的區(qū)別是什么?
-
URI是統(tǒng)一資源標(biāo)識(shí)符,可以唯一標(biāo)識(shí)一個(gè)資源,比如一張圖片,一段音頻。
-
URL是統(tǒng)一資源定位符,可以提供該資源的路徑,就是如何指向這個(gè)資源。
URI準(zhǔn)確來(lái)說(shuō)是包含URL的,比如說(shuō)有一張圖片,他同時(shí)放在了tomcat服務(wù)器中的兩個(gè)不同文件夾中,對(duì)于URI來(lái)說(shuō)就是一張圖片資源,而URL可以有多個(gè),訪問(wèn)的文件夾路徑不同,URL不同,但最終得到的就是這一張圖片資源。
9.Cookie和Session的區(qū)別?
????????因?yàn)槲覍W(xué)習(xí)的時(shí)候接觸的是JWT,沒(méi)有采用Cookie+Session這種方案,對(duì)Cookie和Session的過(guò)程只是了解。因?yàn)镠TTP協(xié)議是無(wú)狀態(tài)的,Session的主要作用就是通過(guò)服務(wù)端記錄用戶的狀態(tài),Session是在服務(wù)端的,Cookie是在客戶端的,所以Cookie中不能存儲(chǔ)敏感信息,最好是將Cookie信息加密存儲(chǔ)然后使用到的時(shí)候再去服務(wù)器端解密。
????????基本認(rèn)證流程如下:
10.GET和POST的區(qū)別?
-
使用場(chǎng)景:get請(qǐng)求一般用于獲取或查詢資源,而post請(qǐng)求一般用于創(chuàng)建和修改資源。
-
緩存:瀏覽器一般會(huì)對(duì)get請(qǐng)求進(jìn)行緩存,而post請(qǐng)求不會(huì)緩存。
-
安全性:如果使用HTTP協(xié)議的話,其實(shí)都不安全,因?yàn)镠TTP協(xié)議本身是明文傳輸。但相對(duì)來(lái)說(shuō)POST請(qǐng)求比GET請(qǐng)求更安全一些,因?yàn)镚ET請(qǐng)求的參數(shù)通常放在URL中。
-
格式:GET請(qǐng)求的URL長(zhǎng)度受到瀏覽器和服務(wù)器的限制,而POST請(qǐng)求的body大小沒(méi)有明確的限制。
?