HTTP相關面試題

2021-10-09 01:56:07 字數 3391 閱讀 9737

一、一次完整的http請求的7個步驟鏈結

瀏覽器與伺服器建立tcp > 瀏覽器像伺服器傳送請求行 > 瀏覽器像伺服器傳送請求頭 > 伺服器應答返回狀態行 > 伺服器返回響應頭 >

伺服器傳送資料 > 伺服器斷開tcp鏈結

五、同步與非同步的區別

1.同步是阻塞模式,非同步是費阻塞模式

2.同步是指傳送乙個請求,需要等待返回,然後才能傳送下乙個請求。有等待過程

3.非同步傳送乙個請求,不需要等待,直接就可以傳送下乙個請求

//補充:如何選擇同步還是非同步模式

我們在傳送ajax請求後,還需要繼續處理伺服器的響應結果,如果這個時候我們使用非同步請求模式同時未將結果的處理交由另乙個js函式進行處理。這時就可能發生,非同步請求的響應還沒到達,函式已經執行完了return語句了,這時將導致return的結果為空字串

二、http與https的區別

1、https協議需要到ca申請證書,一般免費證書較少,因而需要一定費用。

2、http是超文字傳輸協議,資訊是明文傳輸,https則是具有安全性的ssl加密傳輸協議。

3、http和https使用的是完全不同的連線方式,用的埠也不一樣,前者是80,後者是443。

4、http的連線很簡單,是無狀態的;https協議是由ssl+http協議構建的可進行加密傳輸、身份認證的網路協議,比http協議安全。

六、get與post請求的區別鏈結

1.get和post本質上就是tcp,並無差別,但是由於http的規定和瀏覽器/伺服器的限制,導致他們在應用過程**現一些不同

http的底層是tcp/ip,所以get和post的底層也是tcp/ip,也就是說get/pos都是tcp鏈結。

tcp就像是汽車,tcp用來運輸資料,他是很可靠,從來不會發生少件的現象,但是如果路上跑的汽車都一樣,這個世界看起來就亂了,送急件和裝滿貨物的車堵在路上,整個交通系一定會癱瘓,為了避免這種情況發生,交通規則http就誕生了,http給汽車訂好服務型別(get,post,put,delete…),http規定當執行get請求時,給汽車貼上get標籤,而且要把傳送的資料放車頂上(url)以方便記錄,如果是post請求,就要貼上post標籤,並把貨物放在車廂裡,

當然你也可以在get的時候往車廂內偷偷的藏點貨物,可以在post的時候再車頂上放一點資料,讓人覺得傻乎乎的,http只是個行為準則,而tcp才是get和post怎麼實現的基本。

在這裡還有乙個重要角色,運輸公司,不同瀏覽器和伺服器(接收http請求)就是不用的運輸公司。雖然理論上你可以在車頂上無限的堆貨物(url中無限加引數),擔運輸公司不傻,裝貨和卸貨是需要成本的,他們會限制單次運輸量來控制風險,資料量太大對瀏覽器和伺服器都是很大負擔,業界不成文的規定是,(大多數)瀏覽器會限制url長度在2k個位元組,而(大多數)伺服器最多處理64k大小的url,超出部分,恕不處理,如果你用get服務,在request body偷偷藏了資料,不同伺服器的處理方式也不同,有些服務會幫你卸貨讀出資料,有的伺服器位元組忽略,雖然get可以帶request body ,也不能保證一定會被接收到

2.get產生乙個tcp資料報 ; post產生兩個tcp資料報

對於get方式請求,瀏覽器會把http header和data一發出去,伺服器響應200(返回資料)

而post,瀏覽器會先傳送header,伺服器響應100 continue,瀏覽器再傳送data,伺服器響應200 ok(返回資料)

也就是說get只需要跑一趟就可以把貨物送到,而post需要兩趟,第一趟先去和伺服器打個招呼,然後再把貨物送過去

以為post需要兩步,時間上消耗的多一點,看起來get比post更有效,那為什麼不能用get替換post呢?

1.get和post都有自己的語義,不能隨便混用

2.據研究,在網路環境好的情況下,發一次包和發兩次包的時間基本可以無視,而在網路環境差的情況下,兩次包的tcp在驗證資料報完整上有非常大的有點

3.並不是所有瀏覽器都會在post中傳送兩次包,firefox就只傳送一次

七、跨域請求有哪些方案鏈結

跨域是指瀏覽器同源策略:凡是傳送請求的url的 協議(http訪問https)、網域名稱(qianduan.com訪問baidu.com) 、埠號(80埠訪問8080埠)

1.jsonp

通過動態插入乙個script標籤,瀏覽器對script額資源引用沒有同源限制,同時資源載入到頁面後會立即執行(沒有阻塞的情況下)

獲取的資料一般為json格式

缺點:無法傳送poust請求,另外確定jsonp的請求是否失敗並不容易,大多數康佳的實現都是結合超時時間來判定的

2.跨域資源共享 cors 【cross-origin resource sharing】 (推薦使用)

需要被請求放的伺服器端設定:access-control-allow-origin.前端無需設定,若要攜帶cookie請求,前後端都需要設定;需要注意的是:由於同源策略的限制,所讀取的cookie為跨域請求介面所在域的cookie,而非當前頁

3.nginx 反向**

通過nginx配置乙個**伺服器(網域名稱與domain1相同,埠不同)做跳板機,反向**訪問domin2介面,並且可以修改cookie中domain資訊,方便當前域cookie寫入,實現跨域登入

八、常見的http狀態碼

1xx 資訊狀態碼

100 繼續,一般只傳送post請求時,一傳送了http header之後伺服器將返回此資訊,表示確認,之後傳送具體的引數資訊

2xx成功狀態碼

200 正常返回資訊

201 請求成功並且伺服器藏劍了新的資源

202 伺服器已接受了請求,但尚未處理

3xx重定向

301 請求的網頁一用就移動到新的位置

302 臨時重定向

303 臨時性重定向,冰球總是使用get請求新的url

304 自從上次請求後,請求的網頁未修改過

4xx 客戶端錯誤

400 伺服器無法理解請求的格式,

401 請求未授權

403 禁止訪問

404 找不到資源

5xx 伺服器錯誤

500 常見的伺服器端錯誤

503 伺服器暫時無法處理請求(可能是過載或維護)

HTTP相關面試題

在 osi 七層模型中,http協議位於最頂層的應用層中。通過瀏覽器訪問網頁就直接使用了 http 協議。使用 http 協議時,客戶端首先與服務端的 80 埠建立乙個 tcp 連線,然後在這個連線的基礎上進行請求和應答,以及資料的交換。http 有兩個常用版本,分別是 1.0 和 1.1。主要區別...

Http 相關面試題

1 問題 在瀏覽器位址列鍵入url,按下回撤之後經歷的流程 答案 1 dns解析 2 tcp連線 3 發起http請求 4 伺服器處理請求並返回http報文 5 瀏覽器解析渲染頁面 6 連線結束 問題 http 狀態碼 五種可能取值 1xx 指示資訊 表示請求已接收,繼續處理 2xx 成功 表示請求...

http協議相關面試題整理

1 什麼是http協議無狀態協議?怎麼解決http協議無狀態協議?1 無狀態協議對於事務處理沒有記憶能力。缺少狀態意味著如果後續處理需要前面的資訊 2 無狀態協議解決方法 通過1 cookie 2 通過session會話儲存 2 http報文由什麼組成?請求報文包括 1 請求行 包含請求方法,url...