JavaWeb-HTTP協議

1. 什么是HTTP協議

HTTP超文本傳輸協(Hyper Text transfer protocol),是一種用于用于分布式、協作式和超媒體信息系統的應用層協議。它于1990年提出,經過十幾年的使用與發展,得到不斷地完善和擴展。HTTP 是為 Web 瀏覽器與 Web 服務器之間的通信而設計的,但也可以用于其他目的。客戶端與服務器通信時傳輸的內容稱為報文,HTTP協議就是規定了報文的格式。客戶端發送給服務器的稱為請求報文,服務器發送給客戶端的稱為響應報文。

1.1 發展歷程

  • HTTP/0.9
    • 蒂姆伯納斯李是一位英國計算機科學家,也是萬維網的發明者。他在 1989 年創建了單行 HTTP 協議。它只是返回一個網頁。這個協議在 1991 年被命名為 HTTP/0.9。
  • HTTP/1.0
    • 1996年,HTTP/1.0發布,支持三種請求方式:GET,POST和HEAD。
    • HTTP/1.0相對于HTTP/0.9的改進:
      • 每個請求都附加了HTTP版本信息。
      • 在響應開頭附加狀態碼。
      • 請求和響應都包含HTTP報文頭。
      • 能夠傳輸HTML文件以外的文檔。
    • 不是官方標準。
  • HTTP/1.1
    • HTTP第一個標準化版本HTTP/1.1于1997年初發布,支持7種請求方式:GET,POST,HEAD,PUT,DELETE,TRACE和OPTIONS。
    • HTTP/1.1是HTTP/1.0的增強:
      • 一個IP地址可以有多個虛擬主機,通過Host頭域可以訪問一個IP地址下的不同網站。
      • 持久連接和流水線連接允許web瀏覽器通過單個長連接發送多個請求。
      • 緩存支持節省了寬帶并使響應速度更快。如果請求的資源已經緩存了,那么就會直接從本地加載該資源,不需要再從服務器獲取 。
    • 出現了HTTPS,是使用SSL/TLS進行安全加密通信的HTTP的安全版本。
  • HTTP/2
    • 由IETF在2015年發布。HTTP/2旨在提高Web性能,減少延遲,增加安全性,使Web應用更加快速、高效和可靠。
    • 多路復用:允許同時發送多個請求和響應。這樣可以減少延遲,提高效率和網絡吞吐量。
    • 二進制傳輸:使用二進制協議,可以更快地解析,更有效地傳輸數據,減少了傳輸過程中的開銷和延遲。
    • 使用HPACK算法對HTTP頭部進行壓縮,減少了頭部傳輸的數據量,從而減少了網絡延遲。
    • 服務器推送:支持服務器推送,允許服務器在客戶端請求之前推送資源以提高性能。
    • 安全性:默認使用TLS加密傳輸數據,提高了安全性。
    • 兼容HTTP/1.1:可以與HTTP/1.1共存,服務器可以同時支持HTTP/1.1和HTTP/2。如果客戶端不支持HTTP/2,服務器可以使用HTTP/1.1。
  • HTTP/3
    • 于 2021 年 5 月 27 日發布 , HTTP/3 是一種新的、快速、可靠且安全的協議,適用于所有形式的設備。 HTTP/3 沒有使用 TCP,而是使用谷歌在 2012 年開發的新協議 QUIC。
    • HTTP/3 是繼 HTTP/1.1 和 HTTP/2之后的第三次重大修訂。
    • HTTP/3 帶來了革命性的變化,以提高 Web 性能和安全性。設置 HTTP/3 網站需要服務器和瀏覽器支持。
    • 目前,谷歌云、Cloudflare和Fastly支持 HTTP/3。Chrome、Firefox、Edge、Opera 和一些移動瀏覽器支持 HTTP/3。

1.2 HTTP協議的會話方式

在這里插入圖片描述

1.3 在瀏覽器中通過開發者工具抓取請求響應報文

在這里插入圖片描述

2. 請求報文和響應報文

在這里插入圖片描述

2.1 請求報文

  • 請求報文格式
    • 請求行
      • 請求方式
      • 資源路徑
      • 協議版本
    • 請求頭
    • 請求空行
    • 請求體:瀏覽器提交給服務器的數據。

2.1.1 GET方法

  • 請求參數在url中攜帶,所以沒有請求體,也沒有請求空行。
  • 請求參數拼接在url后,使用?與url連接,參數之間通過&連接。
  • 由于參數在url中攜帶,所以有大小限制(地址欄數據一般限制為4kb),并且只能攜帶純文本。
  • 沒有請求體,所以封裝和解析速度快,效率高。瀏覽器的默認提交都是GET請求,比如:地址欄按回車,超鏈接,表單的默認提交方式。
    在這里插入圖片描述

2.1.2 POST方法

  • POST方法有請求體。
  • 請求數據在請求體中攜帶,沒有大小和內容限制。
  • 只能使用POST請求上傳文件。
  • 相對GET方法比較安全,因為提交的數據不在url中明文顯示。
  • 效率比GET方法低。

在這里插入圖片描述
請求體:
在這里插入圖片描述

2.2 響應報文

  • 響應報文格式
    • 響應行
      • 協議版本
      • 狀態碼
      • 狀態碼描述
    • 響應頭
    • 響應空行
    • 響應體

在這里插入圖片描述
在這里插入圖片描述

2.2.1 響應狀態碼

狀態碼狀態碼英文描述中文含義
1**
100Continue繼續。客戶端應繼續其請求。
101Switching Protocols切換協議。服務器根據客戶端的請求切換協議。只能切換到更高級的協議,例如,切換到HTTP的新版本協議。
2**
200OK請求成功。一般用于GET與POST請求。
201Created已創建。成功請求并創建了新的資源。
202Accepted已接受。已經接受請求,但未處理完成。
203Non-Authoritative Information非授權信息。請求成功。但返回的meta信息不在原始的服務器,而是一個副本。
204No Content無內容。服務器成功處理,但未返回內容。在未更新網頁的情況下,可確保瀏覽器繼續顯示當前文檔。
205Reset Content重置內容。服務器處理成功,用戶終端(例如:瀏覽器)應重置文檔視圖。可通過此返回碼清除瀏覽器的表單域。
206Partial Content部分內容。服務器成功處理了部分GET請求。
3**
300Multiple Choices多種選擇。請求的資源可包括多個位置,相應可返回一個資源特征與地址的列表用于用戶終端(例如:瀏覽器)選擇。
301Moved Permanently永久移動。請求的資源已被永久的移動到新URI,返回信息會包括新的URI,瀏覽器會自動定向到新URI。今后任何新的請求都應使用新的URI代替。
302Found臨時移動。與301類似。但資源只是臨時被移動。客戶端應繼續使用原有URI。
303See Other查看其它地址。與301類似。使用GET和POST請求查看。
304Not Modified未修改。所請求的資源未修改,服務器返回此狀態碼時,不會返回任何資源。客戶端通常會緩存訪問過的資源,通過提供一個頭信息指出客戶端希望只返回在指定日期之后修改的資源。
305Use Proxy使用代理。所請求的資源必須通過代理訪問。
306Unused已經被廢棄的HTTP狀態碼。
307Temporary Redirect臨時重定向。與302類似。使用GET請求重定向。
4**
400Bad Request客戶端請求的語法錯誤,服務器無法理解。
401Unauthorized請求要求用戶的身份認證。
402Payment Required保留,將來使用。
403Forbidden服務器理解請求客戶端的請求,但是拒絕執行此請求。
404Not Found服務器無法根據客戶端的請求找到資源(網頁)。通過此代碼,網站設計人員可設置"您所請求的資源無法找到"的個性頁面。
405Method Not Allowed客戶端請求中的方法被禁止。
406Not Acceptable服務器無法根據客戶端請求的內容特性完成請求。
407Proxy Authentication Required請求要求代理的身份認證,與401類似,但請求者應當使用代理進行授權。
408Request Time-out服務器等待客戶端發送的請求時間過長,超時。
409Conflict服務器完成客戶端的 PUT 請求時可能返回此代碼,服務器處理請求時發生了沖突。
410Gone客戶端請求的資源已經不存在。410不同于404,如果資源以前有現在被永久刪除了可使用410代碼,網站設計人員可通過301代碼指定資源的新位置。
411Length Required服務器無法處理客戶端發送的不帶Content-Length的請求信息。
412Precondition Failed客戶端請求信息的先決條件錯誤。
413Request Entity Too Large由于請求的實體過大,服務器無法處理,因此拒絕請求。為防止客戶端的連續請求,服務器可能會關閉連接。如果只是服務器暫時無法處理,則會包含一個Retry-After的響應信息。
414Request-URI Too Large請求的URI過長(URI通常為網址),服務器無法處理。
415Unsupported Media Type服務器無法處理請求附帶的媒體格式。
416Requested range not satisfiable客戶端請求的范圍無效。
417Expectation Failed服務器無法滿足Expect的請求頭信息。
5**
500Internal Server Error服務器內部錯誤,無法完成請求。
501Not Implemented服務器不支持請求的功能,無法完成請求。
502Bad Gateway作為網關或者代理工作的服務器嘗試執行請求時,從遠程服務器接收到了一個無效的響應。
503Service Unavailable由于超載或系統維護,服務器暫時的無法處理客戶端的請求。延時的長度可包含在服務器的Retry-After頭信息中。
504Gateway Time-out充當網關或代理的服務器,未及時從遠端服務器獲取請求。
505HTTP Version not supported服務器不支持請求的HTTP協議的版本,無法完成處理。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/206634.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/206634.shtml
英文地址,請注明出處:http://en.pswp.cn/news/206634.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

AI自動生成代碼工具

AI自動生成代碼工具是一種利用人工智能技術來輔助或自動化軟件開發過程中的編碼任務的工具。這些工具使用機器學習和自然語言處理等技術,根據開發者的需求生成相應的源代碼。以下是一些常見的AI自動生成代碼工具,希望對大家有所幫助。北京木奇移動技術有…

Redisson的基本使用

Redisson官網描述:Redisson 是一個在 Redis 的基礎上實現的 Java 駐內存數據網格客戶端(In-Memory Data Grid)。它不僅提供了一系列的 redis 常用數據結構命令服務,還提供了許多分布式服務,例如分布式鎖、分布式對象、…

HCIP —— BGP 基礎 (上)

BGP --- 邊界網關協議 (路徑矢量協議) IGP --- 內部網關協議 --- OSPF RIP ISIS EGP --- 外部網關協議 --- EGP BGP AS --- 自治系統 由單一的組織或者機構獨立維護的網絡設備以及網絡資源的集合。 因 網絡范圍太大 需 自治 。 為區分不同的AS&#…

vim常見操作

vim常見操作 文章目錄 vim常見操作1. 回退/前進2. 搜索3. 刪除4. 定位到50行5. 顯示行號6. 復制粘貼7. 剪貼8. 替換9. vim打開文件的時候出現 1. 回退/前進 1.esc進入命令模式 2.ctrlr 前進 u 回退2. 搜索 1) esc進入命令模式 2) /text  查找text&am…

Docker load 命令

docker load :導入使用docker save命令導出的鏡像。 語法 docker load [OPTIONS]OPTIONS 說明: --input , -i :指定導入的文件,代替STDIN。 --quiet , -q :精簡輸出信息。 實例: 導入鏡像&#xff1a…

【STM32】TIM定時器輸入捕獲

1 輸入捕獲 1.1 輸入捕獲簡介 IC(Input Capture)輸入捕獲 輸入捕獲模式下,當通道輸入引腳出現指定電平跳變時(上升沿/下降沿),當前CNT的值將被鎖存到CCR中(把CNT的值讀出來,寫入到…

ubuntu16.04安裝ROS+Gazebo

ubuntu16.04安裝ROS參考文章 ros安裝(一鍵最簡安裝,吹爆魚香ROS,請叫我魚吹) ROS篇——Ubuntu快速一鍵安裝ROS或ROS2(通用) ubuntu安裝ROS melodic(最新、超詳細圖文教程) 配置ubuntu以及安裝ros2必要環…

類風濕性關節炎口腔黏膜破裂引發抗瓜氨酸細菌和人蛋白抗體反應

今天給同學們分享一篇實驗文章“Oral mucosal breaks trigger anti-citrullinated bacterial and human protein antibody responses in rheumatoid arthritis”,這篇文章發表在Sci Transl Med期刊上,影響因子為17.1。 結果解讀: 口腔黏膜破…

Redis主從復制的配置和實現原理

Redis的持久化功能在一定程度上保證了數據的安全性,即便是服務器宕機的情況下,也可以保證數據的丟失非常少。通常,為了避免服務的單點故障,會把數據復制到多個副本放在不同的服務器上,且這些擁有數據副本的服務器可以用…

如何快速構建知識服務平臺,打造個人或企業私域流量

隨著互聯網的快速發展,傳統的知識付費平臺已經不能滿足用戶的需求。而SaaS知識付費小程序平臺則是一種新型的知識付費方式,具有靈活、便捷、高效等特點,為用戶提供了更加優質的付費知識服務。本文將介紹如何搭建自己的SaaS知識付費小程序平臺…

如何掌握構建 LMS 網站的藝術

目錄 什么是學習管理系統 (LMS) 在線課程和 LMS 網站的好處 為什么 WordPress 對于 LMS 網站很重要 統一學習中心 多功能性和可擴展性 提高教育參與度 簡化管理和監控 節省時間和費用 技能評估和績效監督 持續學習和技能提升 使用 WordPress 插件構建成功的 LMS 課程 專注于您的…

sparkc程序idea調試提示內存不足

報錯如下: Exception in thread "main" java.lang.IllegalArgumentException: System memory 259522560 must be at least 471859200. Please increase heap size using the --driver-memory option or spark.driver.memory in Spark configuration. 測…

自動駕駛:傳感器初始標定

手眼標定 機器人手眼標定AxxB(eye to hand和eye in hand)及平面九點法標定 Ax xB問題求解,旋轉和平移分步求解法 手眼標定AXXB求解方法(文獻總結) 基于靶的方法 相機標定 (1) ApriTag (2) 棋盤格:cv::f…

富時中國A50指數暴跌

近年來,中國股市的波動一直備受關注,而富時中國A50指數更是其中一項備受矚目的指標之一。然而,近期卻出現了一場引人矚目的暴跌,引發了廣泛的關注和討論。 富時中國A50指數簡介 富時中國A50指數,作為富時羅素指數系列…

【C/PTA】結構體專項練習

本文結合PTA專項練習帶領讀者掌握結構體,刷題為主注釋為輔,在代碼中理解思路,其它不做過多敘述。 目錄 6-1 選隊長6-2 按等級統計學生成績6-3 學生成績比高低6-4 綜合成績6-5 利用“選擇排序算法“對結構體數組進行排序6-6 結構體的最值6-7 復…

香港商標注冊申請所需資料及辦理流程

作為東方明珠,自由港香港是世界上較自由的貿易通商口岸,再加上本身良好的基礎設施和健全的法律制度,這給企業家提供了得天獨厚的營商環境。在香港注冊商標,可以迅速提高企業的知名度,提升企業不斷成長的競爭力&#xf…

全新UI彩虹外鏈網盤系統源碼V5.5/支持批量封禁+優化加載速度+用戶系統與分塊上傳

源碼簡介: 全新UI彩虹外鏈網盤系統源碼V5.5,它可以支持批量封禁優化加載速度。新增用戶系統與分塊上傳。 彩虹外鏈網盤,作為一款PHP網盤與外鏈分享程序,具備廣泛的文件格式支持能力。它不僅能夠實現各種格式文件的上傳&#xff…

CLASS60 DM藍牙5.2雙模熱插拔PCB

鍵盤使用說明索引(均為出廠默認值) 軟件支持(驅動的詳細使用幫助)一些常見問題解答(FAQ)首次使用步驟藍牙配對規則(重要)藍牙和USB切換鍵盤默認層默認觸發層0的FN鍵配置的功能默認功…

使用word中的VBA 批量設置Word中所有圖片大小

在VBA編輯器中,你可以創建、編輯和運行VBA宏代碼,以實現自動化任務和自定義Word 功能。如果你是VBA編程初學者,可以在VBA編輯器中查看Word VBA宏代碼示例,以便更好地了解如何使用VBA編寫代碼。 要打開VBA編輯器,你可以…

【Vue】修改組件樣式并動態添加樣式

文章目錄 目標修改樣式動態添加/刪除樣式樣式不生效 注意:類似效果el-step也可以實現,可以不用手動實現。這里只是練習。 目標 使用組件庫中的組件,修改它的樣式并動態添加/刪除樣式。 修改樣式 組件中的一些類可能添加樣式無法生效。如Ele…