主頁 > 軟體設計 > http協議詳解

http協議詳解

2021-11-15 08:00:37 軟體設計

1、說一下什么是HTTP協議?

超文本傳輸協議(HTTP)

一種無狀態的、以請求/應答方式運行的協議,對客戶端和服務端之間資料傳輸的格式規范,簡稱"超文本傳輸協議",

2、什么是Http協議無狀態協議?怎么解決Http協議無狀態協議?(曾經去某創業公司問到)

  • 無狀態協議對于事務處理沒有記憶能力,缺少狀態,意味著如果后續處理需要前面的資訊
  • 無狀態協議解決辦法: 通過1、Cookie 2、通過Session會話保存,

3、什么是HTTP報文?

HTTP報文是HTTP協議在客戶端和服務端之間傳送的資料塊,

4、Http協議由什么組成?(倒不如說HTTP報文由哪三部分組成?)

HTTP報文由起始行(start line)、頭部(header)和主體(body)三部分組成,起始行是對報文進行的描述,頭部包含報文的一些屬性,主體包含報文的資料(可選,非必選),

5、HTTP報文分為哪兩類?

HTTP報文可以分為:請求報文回應報文,當客戶端向服務端發送請求時,就是發送請求報文;當服務端向客戶端回傳資料時,就是回傳回應報文,比如,獲取一個文本需要的請求報文和回應報文:

preview

6、說一下網路傳輸程序

物、數、網、傳、會、表、應

7、HTTP常見的請求方法有哪些?

下面是之前版本

preview

  • GET: 用于請求訪問已經被URI(統一資源識別符號)識別的資源,可以通過URL傳參給服務器
  • POST:用于傳輸資訊給服務器,主要功能與GET方法類似,但一般推薦使用POST方式,
  • PUT: 傳輸檔案,報文主體中包含檔案內容,保存到對應URI位置,
  • HEAD: 獲得報文首部,與GET方法類似,只是不回傳報文主體,一般用于驗證URI是否有效,
  • DELETE:洗掉檔案,與PUT方法相反,洗掉對應URI位置的檔案,
  • OPTIONS:查詢相應URI支持的HTTP方法,

8、 HTTP的狀態碼分為哪幾類?

preview

9、說一下Http協議中302狀態(阿里經常問)

  • http協議中,回傳狀態碼302表示重定向,
  • 這種情況下,服務器回傳的頭部資訊中會包含一個 Location 欄位,內容是重定向到的url,

10、常見Http協議狀態?

200:請求被正常處理

204:請求被受理但沒有資源可以回傳

206:客戶端只是請求資源的一部分,服務器只對請求的部分資源執行GET方法,相應報文中通過Content-Range指定范圍的資源,

301:永久性重定向

302:臨時重定向

303:與302狀態碼有相似功能,只是它希望客戶端在請求一個URI的時候,能通過GET方法重定向到另一個URI上

304:發送附帶條件的請求時,條件不滿足時回傳,與重定向無關

307:臨時重定向,與302類似,只是強制要求使用POST方法

400:請求報文語法有誤,服務器無法識別

401:請求需要認證

403:請求的對應資源禁止被訪問

404:服務器無法找到對應資源

500:服務器內部錯誤

503:服務器正忙

11、Http協議首部欄位?

a、請求行

請求的第一行是“方法、URL、協議/版本”:

POST http://xg.mediportal.com.cn/health/sms/verify/telephone HTTP/1.1

以上代碼中“POST”代表請求方法,“http://xg.mediportal.com.cn/health/sms/verify/telephone”表示URI,“HTTP/1.1代表協議和協議的版本,

根據HTTP標準,HTTP請求可以使用多種請求方法,例如:HTTP1.1目前支持8種請求方法:詳見上面第 7 步,

b、請求頭(請求頭包含許多有關的客戶端環境和請求正文的有用資訊,例如,請求頭可以宣告瀏覽器所用的語言,請求正文的長度等)

Content-Type

是回傳訊息中非常重要的內容,表示后面的檔案屬于什么MIME型別,Content-Type: [type]/[subtype]; parameter,例如最常見的就是text/html,它的意思是說回傳的內容是文本型別,這個文本又是HTML格式的,原則上瀏覽器會根據Content-Type來決定如何顯示回傳的訊息體內容

Host

指定請求資源的Intenet主機和埠號,必須表示請求url的原始服務器或網關的位置,HTTP/1.1請求必須包含主機頭域,否則系統會以400狀態碼回傳

Accept

瀏覽器可接受的MIME型別

Accept-Charset

瀏覽器可接受的字符集

Accept-Encoding

瀏覽器能夠進行解碼的資料編碼方式,比如gzip,Servlet能夠向支持gzip的瀏覽器回傳經gzip編碼的HTML頁面,許多情形下這可以減少5到10倍的下載時間

Accept-Language

瀏覽器所希望的語言種類,當服務器能夠提供一種以上的語言版本時要用到

Authorization

授權資訊,通常出現在對服務器發送的WWW-Authenticate頭的應答中

Connection

表示是否需要持久連接,如果Servlet看到這里的值為“Keep- Alive”,或者看到請求使用的是HTTP1.1(HTTP 1.1默認進行持久連接),它就可以利用持久連接的優點,當頁面包含多個元素時(例如Applet,圖片),顯著地減少下載所需要的時間,要實作這一點,Servlet需要在應答中發送一個Content-Length頭,最簡單的實作方法是:先把內容寫入 ByteArrayOutputStream,然后在正式寫出內容之前計算它的大小

Content-Length

表示請求訊息正文的長度

Cookie

這是最重要的請求頭資訊之一

From

請求發送者的email地址,由一些特殊的Web客戶程式使用,瀏覽器不會用到它

Host

初始URL中的主機和埠

If-Modified-Since

只有當所請求的內容在指定的日期之后又經過修改才回傳它,否則回傳304“Not Modified”應答

Pragma

指定“no-cache”值表示服務器必須回傳一個重繪后的檔案,即使它是代理服務器而且已經有了頁面的本地拷貝

Referer

包含一個URL,用戶從該URL代表的頁面出發訪問當前請求的頁面

User-Agent

瀏覽器型別,如果Servlet回傳的內容與瀏覽器型別有關則該值非常有用

UA-Pixels,UA-Color,UA-OS,UA-CPU

由某些版本的IE瀏覽器所發送的非標準的請求頭,表示螢屏大小、顏色深度、作業系統和CPU型別

C、請求正文

請求頭和請求正文之間是一個空行,這個行非常重要,它表示請求頭已經結束,接下來的是請求正文,請求正文中可以包含客戶提交的查詢字串資訊:

telephone=15527177736&userType=1&

http回應格式

HTTP應答與HTTP請求相似,HTTP回應也由3個部分構成,分別是:

1、狀態行

2、回應頭(Response Header)

3、回應正文

12、Http與Https優缺點?

  • 通信使用明文不加密,內容可能被竊聽,也就是被抓包分析,
  • 不驗證通信方身份,可能遭到偽裝
  • 無法驗證報文完整性,可能被篡改
  • HTTPS就是HTTP加上加密處理(一般是SSL安全通信線路)+認證+完整性保護

12、Http優化

  • 利用負載均衡優化和加速HTTP應用
  • 利用HTTP Cache來優化網站

13、Http協議有那些特征?

1、支持客戶/服務器模式;2、簡單快速;3、靈活;4、無連接;5、無狀態,

參考:Http協議面試題 - 小周lucky - 博客園

HTTP協議經典面試題整理及答案詳解 - 知乎

轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/357077.html

標籤:其他

上一篇:華為網路配置(ACL)

下一篇:基于TCP的網路編程

標籤雲
其他(157675) Python(38076) JavaScript(25376) Java(17977) C(15215) 區塊鏈(8255) C#(7972) AI(7469) 爪哇(7425) MySQL(7132) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5869) 数组(5741) R(5409) Linux(5327) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4554) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2429) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) 功能(1967) .NET技术(1958) Web開發(1951) python-3.x(1918) HtmlCss(1915) 弹簧靴(1913) C++(1909) xml(1889) PostgreSQL(1872) .NETCore(1853) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • 面試突擊第一季,第二季,第三季

    第一季必考 https://www.bilibili.com/video/BV1FE411y79Y?from=search&seid=15921726601957489746 第二季分布式 https://www.bilibili.com/video/BV13f4y127ee/?spm_id_fro ......

    uj5u.com 2020-09-10 05:35:24 more
  • 第三單元作業總結

    1.前言 這應該是本學期最后一次寫作業總結了吧。總體來說,對作業的節奏也差不多掌握了,作業做起來的效率也更高了。雖然和之前的作業一樣,作業中都要用到新的知識,但是相比之前,更加懂得了如何利用工具以及資料。雖然之間卡過殼,但總體而言,這幾次作業還算完成的比較好。 2.作業程序總結 相比前兩個單元,此單 ......

    uj5u.com 2020-09-10 05:35:41 more
  • 北航OO(2020)第四單元博客作業暨課程總結博客

    北航OO(2020)第四單元博客作業暨課程總結博客 本單元作業的架構設計 在本單元中,由于UML圖具有比較清晰的樹形結構,因此我對其中需要進行查詢操作的元素進行了包裝,在樹的父節點中存盤所有孩子的參考。考慮到性能問題,我采用了快取機制,一次查詢后盡可能快取已經遍歷過的資訊,以減少遍歷次數。 本單元我 ......

    uj5u.com 2020-09-10 05:35:48 more
  • BUAA_OO_第四單元

    一、UML決議器設計 ? 先看下題目:第四單元實作一個基于JDK 8帶有效性檢查的UML(Unified Modeling Language)類圖,順序圖,狀態圖分析器 MyUmlInteraction,實際上我們要建立一個有向圖模型,UML中的物件(元素)可能與同級元素連接,也可與低級元素相連形成 ......

    uj5u.com 2020-09-10 05:35:54 more
  • 6.1邏輯運算子

    邏輯運算子 1. && 短路與 運算式1 && 運算式2 01.運算式1為true并且運算式2也為true 整體回傳為true 02.運算式1為false,將不會執行運算式2 整體回傳為false 03.只要有一個運算式為false 整體回傳為false 2. || 短路或 運算式1 || 運算式2 ......

    uj5u.com 2020-09-10 05:35:56 more
  • BUAAOO 第四單元 & 課程總結

    1. 第四單元:StarUml檔案決議 本單元采用了圖模型決議UML。 UML檔案可以抽象為圖、子圖、邊的邏輯結構。 在實作中,圖的節點包括類、介面、屬性,子圖包括狀態圖、順序圖等。 采用了三次遍歷UML元素的方法建圖,第一遍遍歷建點,第二、三次遍歷設定屬性、連邊,實作圖物件的初始化。這里借鑒了一些 ......

    uj5u.com 2020-09-10 05:36:06 more
  • 談談我對C# 多型的理解

    面向物件三要素:封裝、繼承、多型。 封裝和繼承,這兩個比較好理解,但要理解多型的話,可就稍微有點難度了。今天,我們就來講講多型的理解。 我們應該經常會看到面試題目:請談談對多型的理解。 其實呢,多型非常簡單,就一句話:呼叫同一種方法產生了不同的結果。 具體實作方式有三種。 一、多載 多載很簡單。 p ......

    uj5u.com 2020-09-10 05:36:09 more
  • Python 資料驅動工具:DDT

    背景 python 的unittest 沒有自帶資料驅動功能。 所以如果使用unittest,同時又想使用資料驅動,那么就可以使用DDT來完成。 DDT是 “Data-Driven Tests”的縮寫。 資料:http://ddt.readthedocs.io/en/latest/ 使用方法 dd. ......

    uj5u.com 2020-09-10 05:36:13 more
  • Python里面的xlrd模塊詳解

    那我就一下面積個問題對xlrd模塊進行學習一下: 1.什么是xlrd模塊? 2.為什么使用xlrd模塊? 3.怎樣使用xlrd模塊? 1.什么是xlrd模塊? ?python操作excel主要用到xlrd和xlwt這兩個庫,即xlrd是讀excel,xlwt是寫excel的庫。 今天就先來說一下xl ......

    uj5u.com 2020-09-10 05:36:28 more
  • 當我們創建HashMap時,底層到底做了什么?

    jdk1.7中的底層實作程序(底層基于陣列+鏈表) 在我們new HashMap()時,底層創建了默認長度為16的一維陣列Entry[ ] table。當我們呼叫map.put(key1,value1)方法向HashMap里添加資料的時候: 首先,呼叫key1所在類的hashCode()計算key1 ......

    uj5u.com 2020-09-10 05:36:38 more
最新发布
  • 【中介者設計模式詳解】C/Java/JS/Go/Python/TS不同語言實作

    * 中介者模式是一種行為型設計模式,它可以用來減少類之間的直接依賴關系,
    * 將物件之間的通信封裝到一個中介者物件中,從而使得各個物件之間的關系更加松散。
    * 在中介者模式中,物件之間不再直接相互互動,而是通過中介者來中轉訊息。 ......

    uj5u.com 2023-04-20 08:20:47 more
  • 露天煤礦現場調研和交流案例分享

    他們集團的資訊化公司及研究院在一個礦區正在做智能礦山的統一平臺的 試點,專案投資大概1億,包括了礦山的各方面的內容,顯示得我們這次交流有點多余。他們2年前開始做智能礦山的規劃,有很多煤礦行業專家的加持,他們的描述是非常完美,但是去年底應該上線的平臺,現在還沒有看到影子。他們確實有很多場景需求,但是被... ......

    uj5u.com 2023-04-20 08:20:25 more
  • 《社區人員管理》實戰案例設計&個人案例分享

    設計是一個讓人夢想成真程序,開始編碼、測驗、除錯之前進行需求分析和架構設計,才能保證關鍵方面都做正確 ......

    uj5u.com 2023-04-20 08:20:17 more
  • 軟體架構生態化-多角色交付的探索實踐

    作為一個技術架構師,不僅僅要緊跟行業技術趨勢,還要結合研發團隊現狀及痛點,探索新的交付方案。在日常中,你是否遇到如下問題 “ 業務需求排期長研發是瓶頸;非研發角色感受不到研發技改提效的變化;引入ISV 團隊又擔心質量和安全,培訓周期長“等等,基于此我們探索了一種新的技術體系及交付方案來解決如上問題。 ......

    uj5u.com 2023-04-20 08:20:10 more
  • 【中介者設計模式詳解】C/Java/JS/Go/Python/TS不同語言實作

    * 中介者模式是一種行為型設計模式,它可以用來減少類之間的直接依賴關系,
    * 將物件之間的通信封裝到一個中介者物件中,從而使得各個物件之間的關系更加松散。
    * 在中介者模式中,物件之間不再直接相互互動,而是通過中介者來中轉訊息。 ......

    uj5u.com 2023-04-20 08:19:44 more
  • 露天煤礦現場調研和交流案例分享

    他們集團的資訊化公司及研究院在一個礦區正在做智能礦山的統一平臺的 試點,專案投資大概1億,包括了礦山的各方面的內容,顯示得我們這次交流有點多余。他們2年前開始做智能礦山的規劃,有很多煤礦行業專家的加持,他們的描述是非常完美,但是去年底應該上線的平臺,現在還沒有看到影子。他們確實有很多場景需求,但是被... ......

    uj5u.com 2023-04-20 08:19:07 more
  • 《社區人員管理》實戰案例設計&個人案例分享

    設計是一個讓人夢想成真程序,開始編碼、測驗、除錯之前進行需求分析和架構設計,才能保證關鍵方面都做正確 ......

    uj5u.com 2023-04-20 08:18:57 more
  • 軟體架構生態化-多角色交付的探索實踐

    作為一個技術架構師,不僅僅要緊跟行業技術趨勢,還要結合研發團隊現狀及痛點,探索新的交付方案。在日常中,你是否遇到如下問題 “ 業務需求排期長研發是瓶頸;非研發角色感受不到研發技改提效的變化;引入ISV 團隊又擔心質量和安全,培訓周期長“等等,基于此我們探索了一種新的技術體系及交付方案來解決如上問題。 ......

    uj5u.com 2023-04-20 08:18:49 more
  • 05單件模式

    #經典的單件模式 public class Singleton { private static Singleton uniqueInstance; //一個靜態變數持有Singleton類的唯一實體。 // 其他有用的實體變數寫在這里 //構造器宣告為私有,只有Singleton可以實體化這個類! ......

    uj5u.com 2023-04-19 08:42:51 more
  • 【架構與設計】常見微服務分層架構的區別和落地實踐

    軟體工程的方方面面都遵循一個最基本的道理:沒有銀彈,架構分層模型更是如此,每一種都有各自優缺點,所以請根據不同的業務場景,并遵循簡單、可演進這兩個重要的架構原則選擇合適的架構分層模型即可。 ......

    uj5u.com 2023-04-19 08:42:41 more