第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

首頁(yè) 慕課教程 后端通用面試教程 后端通用面試教程 計(jì)算機(jī)網(wǎng)絡(luò)HTTP協(xié)議

1. 前言

無(wú)論是作為后端開(kāi)發(fā)、前端開(kāi)發(fā)、測(cè)試開(kāi)發(fā)程序員或者是運(yùn)維人員,在面試過(guò)程中,大概率都會(huì)被問(wèn)到 HTTP 協(xié)議相關(guān)題目。

因?yàn)榘殡S著 2010 年之后移動(dòng)互聯(lián)網(wǎng)在全世界的高速發(fā)展,各種各樣的瀏覽器(Chrome、FireFox、Safari 等)層出不窮,也誕生了諸多服務(wù)端開(kāi)發(fā)的語(yǔ)言(例如 Golang 語(yǔ)言),瀏覽器和服務(wù)端之間的交互是不可避免的,我們對(duì)于不同的瀏覽器和不同的服務(wù)端,總不能每次都創(chuàng)建一種新的交互協(xié)議,所以需要確定統(tǒng)一的協(xié)議規(guī)范,也就是本文的 HTTP 協(xié)議。

2.1 HTTP 協(xié)議定義

面試官提問(wèn): 什么是 HTTP 報(bào)文?什么是 HTTP 報(bào)文?

題目解析: 首先,我們給出 HTTP 的定義:HTTP(HyperText Transfer Protocol,超文本傳輸協(xié)議)是一個(gè)請(qǐng)求 - 響應(yīng)(Request to Response)協(xié)議,位于網(wǎng)絡(luò)模型的應(yīng)用層,基于傳輸層的 TCP 協(xié)議。

圖片描述

?

(HTTP 請(qǐng)求 - 響應(yīng)模型)

其次,HTTP 報(bào)文是在客戶端和服務(wù)器端傳輸?shù)臄?shù)據(jù)報(bào)文,由起始行(Start Line)、請(qǐng)求頭部(Request Header)和請(qǐng)求主體(Request Body)構(gòu)成,從類(lèi)型上分為請(qǐng)求報(bào)文(Request Message)和響應(yīng)報(bào)文(Response Message)。

圖片描述

(HTTP 報(bào)文格式)

2.2 HTTP 請(qǐng)求方法

面試官提問(wèn): HTTP 協(xié)議的請(qǐng)求方法有哪些,有啥區(qū)別?

題目解析:

序號(hào) 方法 說(shuō)明
1 GET 請(qǐng)求服務(wù)器上的資源,請(qǐng)求體不會(huì)包含請(qǐng)求數(shù)據(jù),參數(shù)可以通過(guò) URL 傳輸。
2 POST 用戶傳輸信息到服務(wù)器,請(qǐng)求方式類(lèi)似 GET 請(qǐng)求,比如提交表單。
3 PUT 用戶傳輸信息到服務(wù)器,請(qǐng)求方式類(lèi)似 POST 請(qǐng)求,比如提交文件。
4 DELETE 請(qǐng)求服務(wù)器刪除某個(gè)資源,和 POST 請(qǐng)求作用相反。
5 OPTIONS 查詢(xún) URL 支持的 HTTP 方法。
6 HEAD 請(qǐng)求方式類(lèi)似 GET 請(qǐng)求,但是服務(wù)器不會(huì)返回消息體,一般用于檢查網(wǎng)頁(yè)是否被修改、檢查 URL 是否有效。

除此之外,HTTP 協(xié)議還有 TRACE、CONNECT 等方法,但是在日常開(kāi)發(fā)中基本不會(huì)用到,所以不用關(guān)注。

面試官常常會(huì)將 POST 和 GET 方法進(jìn)行對(duì)比,我們需要注意以下幾個(gè)不同:

(1)GET 請(qǐng)求主要是為了從服務(wù)器獲取資源,POST 請(qǐng)求主要是為了向服務(wù)器發(fā)送資源。

(2)GET 請(qǐng)求是通過(guò) URL 傳參,形式是 field = value,多個(gè)參數(shù)使用 & 進(jìn)行分割,例如 http://127.0.0.1/login?username=xiaoming&password=123456。POST 請(qǐng)求是通過(guò)請(qǐng)求體傳參,即信息存放到 Request Body 中。

(3)GET 請(qǐng)求傳輸?shù)男畔⒘可?,POST 請(qǐng)求能夠傳輸?shù)男畔⒘慷唷?/p>

(4)GET 請(qǐng)求參數(shù)在 URL 明文,容易被爬蟲(chóng)直接獲取,POST 請(qǐng)求參數(shù)不直接可見(jiàn),安全性更高,例如在表單提交密碼時(shí),必須使用 POST 請(qǐng)求。

2.3 HTTP 狀態(tài)碼

面試官提問(wèn): 請(qǐng)枚舉一些常見(jiàn)的 HTTP 狀態(tài)碼,并且說(shuō)明作用。

題目解析:

首先我們從性質(zhì)上分類(lèi),HTTP 的響應(yīng)狀態(tài)碼總共有 1XX 到 5XX 五種類(lèi)型,關(guān)于每種狀態(tài)碼的定義:

狀態(tài)碼開(kāi)頭 性質(zhì)
1XX 服務(wù)器收到請(qǐng)求,需要請(qǐng)求者繼續(xù)執(zhí)行操作。
2XX 客戶端請(qǐng)求成功,并且服務(wù)端成功處理。
3XX 重定向,需要進(jìn)一步的操作以完成請(qǐng)求。
4XX 客戶端錯(cuò)誤,請(qǐng)求包含語(yǔ)法錯(cuò)誤或者無(wú)法完成請(qǐng)求。
5XX 服務(wù)器錯(cuò)誤,服務(wù)器在處理請(qǐng)求的過(guò)程中發(fā)生了錯(cuò)誤。

對(duì)于 4XX 開(kāi)頭的錯(cuò)誤碼,都是因?yàn)榭蛻舳俗陨淼脑虍a(chǎn)生,例如我們輸入 URL:http://idcbgp.cn/home,因?yàn)椴淮嬖谶@個(gè) URL 對(duì)應(yīng)的資源,所以返回 404 Not Found,找不到頁(yè)面。

對(duì)于 5XX 開(kāi)頭的錯(cuò)誤碼,都是因?yàn)榉?wù)器處理過(guò)程中遇到異常產(chǎn)生,例如后端開(kāi)發(fā)程序員在處理 HTTP 請(qǐng)求的過(guò)程觸發(fā)了 Exception,導(dǎo)致響應(yīng)失敗。

在定性之后,面試官大概率還要抽出幾個(gè)常見(jiàn)的狀態(tài)碼,考察其具體的含義,我們對(duì)常見(jiàn)的狀態(tài)碼也需要進(jìn)行總結(jié):

狀態(tài)碼 狀態(tài)碼對(duì)應(yīng)英文 說(shuō)明
100 Continue 服務(wù)器收到了客戶端的請(qǐng)求行和頭部信息,告訴
客戶端繼續(xù)發(fā)送數(shù)據(jù)部分。
200 OK 請(qǐng)求成功。
301 Permanently Moved 資源被永久轉(zhuǎn)移了,請(qǐng)求將被重定向。
302 Temporarily Moved 資源被臨時(shí)轉(zhuǎn)移了,請(qǐng)求將被重定向。
404 Not Found 資源沒(méi)找到。
500 Internal Server Error 服務(wù)器內(nèi)部錯(cuò)誤。

這里需要分區(qū)開(kāi) 301 和 302 錯(cuò)誤碼(也是常見(jiàn)考點(diǎn)),從字面意思上看,301 和 302 都代表某個(gè) URL 被轉(zhuǎn)移了,區(qū)別在于:

(1)301 表示資源被永久轉(zhuǎn)移了,搜索引擎(例如百度的爬蟲(chóng))在爬取網(wǎng)站的時(shí)候會(huì)抓取新網(wǎng)站的內(nèi)容并且保留新網(wǎng)站的 URL。

(2)302 表示資源被臨時(shí)轉(zhuǎn)移了,也就是臨時(shí)重定向,搜索引擎在爬取網(wǎng)站的時(shí)候會(huì)抓取新的內(nèi)容,但是保留舊網(wǎng)站作為 URL。

3. 小結(jié)

HTTP 協(xié)議應(yīng)該是前端、后端、測(cè)試開(kāi)發(fā)人員最常接觸的網(wǎng)絡(luò)協(xié)議了,因?yàn)檫@是網(wǎng)站和用戶之間傳輸信息的直接渠道。面試官考察 HTTP 相關(guān)的問(wèn)題,也是為了了解候選人的開(kāi)發(fā)基本功,為了熟悉本小結(jié)的知識(shí),大家也可以了解下發(fā)送 HTTP 的 Postman 開(kāi)發(fā)工具,以及 HTTP 網(wǎng)絡(luò)抓包的 Wireshark 工具。