1.HTTP 狀態(tài)碼 400、401、403 的含義
(1)400狀態(tài)碼:請(qǐng)求無效
產(chǎn)生原因:
前端提交數(shù)據(jù)的字段名稱和字段類型與后臺(tái)的實(shí)體沒有保持一致
前端提交到后臺(tái)的數(shù)據(jù)應(yīng)該是json字符串類型,但是前端沒有將對(duì)象JSON.stringify轉(zhuǎn)化成字符串。
解決方法:
對(duì)照字段的名稱,保持一致性
將obj對(duì)象通過JSON.stringify實(shí)現(xiàn)序列化
(2)401狀態(tài)碼:當(dāng)前請(qǐng)求需要用戶驗(yàn)證
(3)403狀態(tài)碼:伺服器已經(jīng)得到請(qǐng)求,但是拒絕執(zhí)行
2.什么是 CSRF 攻擊,如何避免
CSRF:Cross-Site Request Forgery(中文:跨站請(qǐng)求偽造),可以理解為攻擊者盜用了你的身份,以你的名義發(fā)送惡意請(qǐng)求,比如:以你名義發(fā)送郵件、發(fā)消息、購(gòu)買商品,虛擬貨幣轉(zhuǎn)賬等。
防御手段:驗(yàn)證請(qǐng)求來源地址; 關(guān)鍵操作添加驗(yàn)證碼; 在請(qǐng)求地址添加 token 并驗(yàn)證。
3.請(qǐng)你解釋一下TCP為什么可靠一些
三次握手,超時(shí)重傳,滑動(dòng)窗口,擁塞控制。
4.forward 和 redirect 的區(qū)別
forward 是轉(zhuǎn)發(fā) 和 redirect 是重定向:
地址欄 url 顯示:foward url 不會(huì)發(fā)生改變,redirect url 會(huì)發(fā)生改變;
數(shù)據(jù)共享:forward 可以共享 request 里的數(shù)據(jù),redirect 不能共享;
效率:forward 比 redirect 效率高。
5.WebSocket的實(shí)現(xiàn)和應(yīng)用
(1)什么是WebSocket
WebSocket是HTML5中的協(xié)議,支持持久連續(xù),http協(xié)議不支持持久性連接。Http1.0和HTTP1.1都不支持持久性的鏈接,HTTP1.1中的keep-alive,將多個(gè)http請(qǐng)求合并為1個(gè)
(2)WebSocket是什么樣的協(xié)議,具體有什么優(yōu)點(diǎn)
HTTP的生命周期通過Request來界定,也就是Request一個(gè)Response,那么在Http1.0協(xié)議中,這次Http請(qǐng)求就結(jié)束了。在Http1.1中進(jìn)行了改進(jìn),是的有一個(gè)connection:Keep-alive,也就是說,在一個(gè)Http連接中,可以發(fā)送多個(gè)Request,接收多個(gè)Response。但是必須記住,在Http中一個(gè)Request只能對(duì)應(yīng)有一個(gè)Response,而且這個(gè)Response是被動(dòng)的,不能主動(dòng)發(fā)起。
WebSocket是基于Http協(xié)議的,或者說借用了Http協(xié)議來完成一部分握手,在握手階段與Http是相同的。我們來看一個(gè)websocket握手協(xié)議的實(shí)現(xiàn),基本是2個(gè)屬性,upgrade,connection。
6.請(qǐng)你說一下http協(xié)議會(huì)話結(jié)束標(biāo)志怎么截出來
看tcp連接是否有斷開的四部揮手階段。
7.HTTP具體有哪些請(qǐng)求頭是跟緩存相關(guān)的
緩存分為兩種:強(qiáng)緩存和協(xié)商緩存,根據(jù)響應(yīng)的header內(nèi)容來決定。
強(qiáng)緩存相關(guān)字段有expires,cache-control。如果cache-control與expires同時(shí)存在的話,cache-control的優(yōu)先級(jí)高于expires。
協(xié)商緩存相關(guān)字段有Last-Modified/If-Modified-Since,Etag/If-None-Match
8.請(qǐng)你講講http1.1和1.0的區(qū)別
主要區(qū)別主要體現(xiàn)在:
緩存處理,在HTTP1.0中主要使用header里的If-Modified-Since,Expires來做為緩存判斷的標(biāo)準(zhǔn),HTTP1.1則引入了更多的緩存控制策略例如Entity tag,If-Unmodified-Since, If-Match, If-None-Match等更多可供選擇的緩存頭來控制緩存策略。
帶寬優(yōu)化及網(wǎng)絡(luò)連接的使用,HTTP1.0中,存在一些浪費(fèi)帶寬的現(xiàn)象,例如客戶端只是需要某個(gè)對(duì)象的一部分,而伺服器卻將整個(gè)對(duì)象送過來了,并且不支持?jǐn)帱c(diǎn)續(xù)傳功能,HTTP1.1則在請(qǐng)求頭引入了range頭域,它允許只請(qǐng)求資源的某個(gè)部分,即返回碼是206(Partial Content),這樣就方便了開發(fā)者自由的選擇以便于充分利用帶寬和連接。
錯(cuò)誤通知的管理,在HTTP1.1中新增了24個(gè)錯(cuò)誤狀態(tài)響應(yīng)碼,如409(Conflict)表示請(qǐng)求的資源與資源的當(dāng)前狀態(tài)發(fā)生沖突;410(Gone)表示伺服器上的某個(gè)資源被永久性的刪除。
Host頭處理,在HTTP1.0中認(rèn)為每臺(tái)伺服器都綁定一個(gè)唯一的IP地址,因此,請(qǐng)求消息中的URL并沒有傳遞主機(jī)名(hostname)。但隨著虛擬主機(jī)技術(shù)的發(fā)展,在一臺(tái)物理伺服器上可以存在多個(gè)虛擬主機(jī)(Multi-homed Web Servers),并且它們共享一個(gè)IP地址。HTTP1.1的請(qǐng)求消息和響應(yīng)消息都應(yīng)支持Host頭域,且請(qǐng)求消息中如果沒有Host頭域會(huì)報(bào)告一個(gè)錯(cuò)誤(400 Bad Request)。
長(zhǎng)連接,HTTP 1.1支持長(zhǎng)連接(PersistentConnection)和請(qǐng)求的流水線(Pipelining)處理,在一個(gè)TCP連接上可以傳送多個(gè)HTTP請(qǐng)求和響應(yīng),減少了建立和關(guān)閉連接的消耗和延遲,在HTTP1.1中默認(rèn)開啟Connection: keep-alive,一定程度上彌補(bǔ)了HTTP1.0每次請(qǐng)求都要?jiǎng)?chuàng)建連接的缺點(diǎn)。
9.請(qǐng)簡(jiǎn)單解釋一下,arp協(xié)議和arp攻擊。
地址解析協(xié)議。ARP攻擊的第一步就是ARP欺騙。由上述“ARP協(xié)議的工作過程”我們知道,ARP協(xié)議基本沒有對(duì)網(wǎng)絡(luò)的安全性做任何思考,當(dāng)時(shí)人們考慮的重點(diǎn)是如何保證網(wǎng)絡(luò)通信能夠正確和快速的完成——ARP協(xié)議工作的前提是默認(rèn)了其所在的網(wǎng)絡(luò)是一個(gè)善良的網(wǎng)絡(luò),每臺(tái)主機(jī)在向網(wǎng)絡(luò)中發(fā)送應(yīng)答信號(hào)時(shí)都是使用的真實(shí)身份。不過后來,人們發(fā)現(xiàn)ARP應(yīng)答中的IP地址和MAC地址中的信息是可以偽造的,并不一定是自己的真實(shí)IP地址和MAC地址,由此,ARP欺騙就產(chǎn)生了。
10.HTTP HEAD請(qǐng)求的含義
head:類似于get請(qǐng)求,只不過返回的響應(yīng)中沒有具體的內(nèi)容,用戶獲取報(bào)頭
options:允許客戶端查看伺服器的性能,比如說伺服器支持的請(qǐng)求方式等等。
11.請(qǐng)回答一下HTTP和HTTPS的區(qū)別,以及HTTPS有什么缺點(diǎn)
HTTP協(xié)議和HTTPS協(xié)議區(qū)別如下:
(1)HTTP協(xié)議是以明文的方式在網(wǎng)絡(luò)中傳輸數(shù)據(jù),而HTTPS協(xié)議傳輸?shù)臄?shù)據(jù)則是經(jīng)過TLS加密后的,HTTPS具有更高的安全性
(2)HTTPS在TCP三次握手階段之后,還需要進(jìn)行SSL 的handshake,協(xié)商加密使用的對(duì)稱加密密鑰
(3)HTTPS協(xié)議需要服務(wù)端申請(qǐng)證書,瀏覽器端安裝對(duì)應(yīng)的根證書
(4)HTTP協(xié)議端口是80,HTTPS協(xié)議端口是443
HTTPS優(yōu)點(diǎn):
HTTPS傳輸數(shù)據(jù)過程中使用密鑰進(jìn)行加密,所以安全性更高
HTTPS協(xié)議可以認(rèn)證用戶和伺服器,確保數(shù)據(jù)發(fā)送到正確的用戶和伺服器
HTTPS缺點(diǎn):
HTTPS握手階段延時(shí)較高:由于在進(jìn)行HTTP會(huì)話之前還需要進(jìn)行SSL握手,因此HTTPS協(xié)議握手階段延時(shí)增加
HTTPS部署成本高:一方面HTTPS協(xié)議需要使用證書來驗(yàn)證自身的安全性,所以需要購(gòu)買CA證書;另一方面由于采用HTTPS協(xié)議需要進(jìn)行加解密的計(jì)算,占用CPU資源較多,需要的伺服器配置或數(shù)目高
12.請(qǐng)問你有沒有基于做過socket的開發(fā)具體網(wǎng)絡(luò)層的操作該怎么做(其實(shí)也是問網(wǎng)絡(luò)編程的基本步驟)
服務(wù)端:socket-bind-listen-accept
客戶端:socket-connect
13.ip報(bào)文經(jīng)過一個(gè)路由器改變哪些字段
源和目的的IP地址,源和目的的MAC地址以及TTL值。
14.HTTP2.0 有哪些特性
(1)內(nèi)容安全,應(yīng)為http2.0是基于https的,天然具有安全特性,通過http2.0的特性可以避免單純使用https的性能下降
(2)二進(jìn)制格式,http1.X的解析是基于文本的,http2.0將所有的傳輸信息分割為更小的消息和幀,并對(duì)他們采用二進(jìn)制格式編碼,基于二進(jìn)制可以讓協(xié)議有更多的擴(kuò)展性,比如引入了幀來傳輸數(shù)據(jù)和指令
(3)多路復(fù)用,這個(gè)功能相當(dāng)于是長(zhǎng)連接的增強(qiáng),每個(gè)request請(qǐng)求可以隨機(jī)的混雜在一起,接收方可以根據(jù)request的id將request再歸屬到各自不同的服務(wù)端請(qǐng)求里面,另外多路復(fù)用中也支持了流的優(yōu)先級(jí),允許客戶端告訴伺服器那些內(nèi)容是更優(yōu)先級(jí)的資源,可以優(yōu)先傳輸。
15.HTTP狀態(tài)碼 304 的含義什么時(shí)候用304
304:如果客戶端發(fā)送了一個(gè)帶條件的GET 請(qǐng)求且該請(qǐng)求已被允許,而文檔的內(nèi)容(自上次訪問以來或者根據(jù)請(qǐng)求的條件)并沒有改變,則伺服器應(yīng)當(dāng)返回這個(gè)304狀態(tài)碼。
16.請(qǐng)說明一下http和https的區(qū)別
https協(xié)議要申請(qǐng)證書到ca,需要一定經(jīng)濟(jì)成本;2) http是明文傳輸,https是加密的安全傳輸;3) 連接的端口不一樣,http是80,https是443;4)http連接很簡(jiǎn)單,沒有狀態(tài);https是ssl加密的傳輸,身份認(rèn)證的網(wǎng)絡(luò)協(xié)議,相對(duì)http傳輸比較安全。
17.你知道TCP協(xié)議、IP協(xié)議、HTTP協(xié)議分別在哪一層嗎
考察點(diǎn):網(wǎng)絡(luò)七層模型
運(yùn)輸層,網(wǎng)絡(luò)層,應(yīng)用層。
七層結(jié)構(gòu):物理層、數(shù)據(jù)鏈路層、網(wǎng)絡(luò)層、傳輸層、會(huì)話層、表示層、應(yīng)用層
tcp屬于傳輸層;http屬于應(yīng)用層。
18.HTTP常見的請(qǐng)求方法
get、post,這兩個(gè)用的是最多的,還有很多比如patch、delete、put、options等等
19.請(qǐng)你說一下阻塞,非阻塞,同步,異步
阻塞和非阻塞:調(diào)用者在事件沒有發(fā)生的時(shí)候,一直在等待事件發(fā)生,不能去處理別的任務(wù)這是阻塞。調(diào)用者在事件沒有發(fā)生的時(shí)候,可以去處理別的任務(wù)這是非阻塞。
同步和異步:調(diào)用者必須循環(huán)自去查看事件有沒有發(fā)生,這種情況是同步。調(diào)用者不用自己去查看事件有沒有發(fā)生,而是等待著注冊(cè)在事件上的回調(diào)函數(shù)通知自己,這種情況是異步
20.搜索baidu,會(huì)用到計(jì)算機(jī)網(wǎng)絡(luò)中的什么層每層是干什么的
瀏覽器中輸入U(xiǎn)RL
瀏覽器要將URL解析為IP地址,解析域名就要用到DNS協(xié)議,首先主機(jī)會(huì)查詢DNS的緩存,如果沒有就給本地DNS發(fā)送查詢請(qǐng)求。DNS查詢分為兩種方式,一種是遞歸查詢,一種是迭代查詢。如果是迭代查詢,本地的DNS伺服器,向根域名伺服器發(fā)送查詢請(qǐng)求,根域名伺服器告知該域名的一級(jí)域名伺服器,然后本地伺服器給該一級(jí)域名伺服器發(fā)送查詢請(qǐng)求,然后依次類推直到查詢到該域名的IP地址。DNS伺服器是基于UDP的,因此會(huì)用到UDP協(xié)議。
得到IP地址后,瀏覽器就要與伺服器建立一個(gè)http連接。因此要用到http協(xié)議,http協(xié)議報(bào)文格式上面已經(jīng)提到。http生成一個(gè)get請(qǐng)求報(bào)文,將該報(bào)文傳給TCP層處理,所以還會(huì)用到TCP協(xié)議。如果采用https還會(huì)使用https協(xié)議先對(duì)http數(shù)據(jù)進(jìn)行加密。TCP層如果有需要先將HTTP數(shù)據(jù)包分片,分片依據(jù)路徑MTU和MSS。TCP的數(shù)據(jù)包然后會(huì)發(fā)送給IP層,用到IP協(xié)議。IP層通過路由選路,一跳一跳發(fā)送到目的地址。當(dāng)然在一個(gè)網(wǎng)段內(nèi)的尋址是通過以太網(wǎng)協(xié)議實(shí)現(xiàn)(也可以是其他物理層協(xié)議,比如PPP,SLIP),以太網(wǎng)協(xié)議需要直到目的IP地址的物理地址,有需要ARP協(xié)議。
其中:
(1)DNS協(xié)議,http協(xié)議,https協(xié)議屬于應(yīng)用層
應(yīng)用層是體系結(jié)構(gòu)中的最高層。應(yīng)用層確定進(jìn)程之間通信的性質(zhì)以滿足用戶的需要。這里的進(jìn)程就是指正在運(yùn)行的程序。應(yīng)用層不僅要提供應(yīng)用進(jìn)程所需要的信息交換和遠(yuǎn)地操作,而且還要作為互相作用的應(yīng)用進(jìn)程的用戶代理,來完成一些為進(jìn)行語義上有意義的信息交換所必須的功能。應(yīng)用層直接為用戶的應(yīng)用進(jìn)程提供服務(wù)。
(2)TCP/UDP屬于傳輸層
傳輸層的任務(wù)就是負(fù)責(zé)主機(jī)中兩個(gè)進(jìn)程之間的通信。因特網(wǎng)的傳輸層可使用兩種不同協(xié)議:即面向連接的傳輸控制協(xié)議TCP,和無連接的用戶數(shù)據(jù)報(bào)協(xié)議UDP。面向連接的服務(wù)能夠提供可靠的交付,但無連接服務(wù)則不保證提供可靠的交付,它只是“盡最大努力交付”。這兩種服務(wù)方式都很有用,備有其優(yōu)缺點(diǎn)。在分組交換網(wǎng)內(nèi)的各個(gè)交換結(jié)點(diǎn)機(jī)都沒有傳輸層。
(3)IP協(xié)議,ARP協(xié)議屬于網(wǎng)絡(luò)層
網(wǎng)絡(luò)層負(fù)責(zé)為分組交換網(wǎng)上的不同主機(jī)提供通信。在發(fā)送數(shù)據(jù)時(shí),網(wǎng)絡(luò)層將運(yùn)輸層產(chǎn)生的報(bào)文段或用戶數(shù)據(jù)報(bào)封裝成分組或包進(jìn)行傳送。在TCP/IP體系中,分組也叫作IP數(shù)據(jù)報(bào),或簡(jiǎn)稱為數(shù)據(jù)報(bào)。網(wǎng)絡(luò)層的另一個(gè)任務(wù)就是要選擇合適的路由,使源主機(jī)運(yùn)輸層所傳下來的分組能夠交付到目的主機(jī)。
(4)數(shù)據(jù)鏈路層
當(dāng)發(fā)送數(shù)據(jù)時(shí),數(shù)據(jù)鏈路層的任務(wù)是將在網(wǎng)絡(luò)層交下來的IP數(shù)據(jù)報(bào)組裝成幀,在兩個(gè)相鄰結(jié)點(diǎn)間的鏈路上傳送以幀為單位的數(shù)據(jù)。每一幀包括數(shù)據(jù)和必要的控制信息(如同步信息、地址信息、差錯(cuò)控制、以及流量控制信息等)?刂菩畔⑹菇邮斩四軌蛑馈獋(gè)幀從哪個(gè)比特開始和到哪個(gè)比特結(jié)束?刂菩畔⑦使接收端能夠檢測(cè)到所收到的幀中有無差錯(cuò)。
(5)物理層
物理層的任務(wù)就是透明地傳送比特流。在物理層上所傳數(shù)據(jù)的單位是比特。傳遞信息所利用的一些物理媒體,如雙絞線、同軸電纜、光纜等,并不在物理層之內(nèi)而是在物理層的下面。因此也有人把物理媒體當(dāng)做第0層。
本文由培訓(xùn)無憂網(wǎng)千鋒IT培訓(xùn)專屬課程顧問老師整理發(fā)布,更多相關(guān)課程請(qǐng)關(guān)注培訓(xùn)無憂網(wǎng)web前端培訓(xùn)或添加老師微信:15033336050
注:尊重原創(chuàng)文章,轉(zhuǎn)載請(qǐng)注明出處和鏈接 http://www.dedgn.cn/news-id-2829.html 違者必究!部分文章來源于網(wǎng)絡(luò)由培訓(xùn)無憂網(wǎng)編輯部人員整理發(fā)布,內(nèi)容真實(shí)性請(qǐng)自行核實(shí)或聯(lián)系我們,了解更多相關(guān)資訊請(qǐng)關(guān)注web前端頻道查看更多,了解相關(guān)專業(yè)課程信息您可在線咨詢也可免費(fèi)申請(qǐng)?jiān)囌n。關(guān)注官方微信了解更多:150 3333 6050