一面中,如果有筆試,考http協議的可能性較大。
一面要講的內容:
二面要講的內容;
通常我們要答出以上四個內容。如果實在記不住,一定要記得後面的兩個:無連線、無狀態。
我們分別來解釋一下。
http協議的頭部有乙個資料型別
,通過http協議,就可以完成不同資料型別的傳輸。
連線一次,就會斷開,不會繼續保持連線。
客戶端和伺服器端是兩種身份。第一次請求結束後,就斷開了,第二次請求時,伺服器端並沒有記住之前的狀態,也就是說,伺服器端無法區分客戶端是否為同乙個人、同乙個身份。
有的時候,我們訪問**時,**能記住我們的賬號,這個是通過其他的手段(比如 session)做到的,並不是http協議能做到的。
在回答此問題時,我們要按照順序回答:
包括:http方法有很多,但是上面這五個方法,要求在面試時全部說出來,不要漏掉。
get 和 post 比較常見。
put 和 delete 在實際應用中用的很少。況且,業務中,一般不刪除伺服器端的資源。
head 可能偶爾用的到。
區別有很多,如果記不住,面試時,至少要任意答出其中的三四條。
有一點要強調,get是相對不隱私的,而post是相對隱私的。
我們大概要記住以下幾點:
1、瀏覽器在回退時,get不會重新請求,但是post會重新請求。【重要】
2、get請求會被瀏覽器主動快取,而post不會。【重要】
3、get請求的引數,會報保留在瀏覽器的歷史記錄裡,而post不會。做業務時要注意。為了防止csrf攻擊,很多公司把get統一改成了post。
4、get請求在url中傳遞的引數有大小限制,基本是2kb,不同的瀏覽器略有不同。而post沒有注意。
5、get的引數是直接暴露在url上的,相對不安全。而post是放在請求體中的。
http狀態碼分類:
常見的http狀態碼:
部分解釋:
301:重定向(永久)。
302:重定向(臨時)。
304:我這個伺服器告訴客戶端,你已經有快取了,不需要從我這裡取了。
400和401用的不多。403指的是請求被拒絕。404指的是資源不存在。
如果你能答出持久鏈結,這是面試官很想知道的乙個點。注意,http 1.1預設進行持久連線。在一次 tcp 連線中可以完成多個 http 請求,但是對每個請求仍然要單獨發 header,keep-alive不會永久保持連線,它有乙個保持時間,可以在不同的伺服器軟體(如apache)中設定這個時間。
如果能答出管線化,則屬於加分項。長連線時,預設的請求這樣的:
請求1 --> 響應1 -->請求2 --> 響應2 --> 請求3 --> 響應3
長連線中的管線化,請求是這樣的:
請求1 --> 請求2 --> 請求3 --> 響應1 --> 響應2 --> 響應3
管線化就是,我把現在的請求打包,一次性發過去,你也給我一次響應回來。
面試時,不會深究管線化。如果真要問你,就回答:「我沒怎麼研究過,準備回去看看~」
前端面試 04 HTTP協議
注意 一面中有筆試,考http協議的可能性大 1.一面,有關http 2.二面 注意 按照順序回答 首先,http報文包括 請求報文和響應報文 其次,每個報文包含什麼部分?請求報文包括 請求行 請求頭 空行 請求體 響應報文包括 狀態行 響應頭 空行 響應體。最後,每個部分的內容是什麼?響應報文 注...
HTTP協議面試
http1.0所做的優化 http1.0 http1.1的區別 1快取處理不同。1.0只是用乙個標頭檔案的快取策略,1.1引入了更多 2頻寬優化及網路連線的使用 1.0存在浪費頻寬,不支援斷點續傳功能。1.1允許只請求資源的部分 3host頭處理 1.0中每台伺服器繫結唯一的ip位址。1.1請求訊息...
http協議 04通訊原理
常見編碼規範 ascii碼 乙個位元組的儲存位 gbk漢字內碼擴充套件方式,倆個位元組的儲存位 iso 8859 1 除了ascii收納了其他的小語種 unicode 32個二進位制字符集表示 url是採用ascii字符集進行編碼的,所以如果url中含有非ascii字符集中的字 符,要對其進行編碼。...