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