【網絡原理】從零開始深入理解HTTP的報文格式(二)

在這里插入圖片描述

本篇博客給大家帶來的是網絡HTTP協議的知識點, 續上篇文章,接著介紹HTTP的報文格式.
🐎文章專欄: JavaEE初階
🚀若有問題 評論區見
? 歡迎大家點贊 評論 收藏 分享
如果你不知道分享給誰,那就分享給薯條.
你們的支持是我不斷創作的動力 .

王子,公主請閱🚀

  • 要開心
    • 要快樂
      • 順便進步
  • 1. HTTP響應
    • 1.1 認識"狀態碼"
    • 1.2 認識響應"報頭"
    • 1.3 認識響應"正文"(body)
  • 2. 構造HTTP請求
    • 2.1 通過form表單構造HTTP請求.
    • 2.2 利用ajax構造HTTP請求
    • 2.3 利用postman構造HTTP請求

要開心

要快樂

順便進步

1. HTTP響應

響應的構成主要涉及到前端的知識:
html css js 構成網頁的主體.
html 表示頁面的骨架.
css 表示頁面的樣式.
js 表示頁面的行為.

1.1 認識"狀態碼"

在這里插入圖片描述

狀態碼表示訪問一個頁面的結果. (是訪問成功, 還是失敗, 還是其他的一些情況)
以下是比較常見的狀態碼.

① 200 OK
表示訪問成功.

這是一個最常見的狀態碼, 表示訪問成功. 抓包抓到的大部分結果都是 200

在這里插入圖片描述

② 404 Not Found
表示沒有找到資源.

瀏覽器輸入一個 URL, 目的就是為了訪問對方服務器上的一個資源. 如果這個 URL 標識的資源不存在,那么就會出現 404.例如, 在瀏覽器中輸入 https://www.sogou.com/index.html
此時就在嘗試訪問 sogou 上的
/index.html 這個資源.如果輸入正確, 則可以正確訪問到. 但是如果輸入錯誤, 比如 www.sogou.com/inde.html , 就會看到 404 這樣的響應.

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

③ 403 Forbidden
表示用戶沒有權限訪問.

查看碼云的私有倉庫, 如果不登陸, 就會出現 403. 訪問受限403


在這里插入圖片描述

④ 418 l am a teapot
這個狀態碼并沒有實際的意義,只是"開個玩笑",稱為"彩蛋".
實際開發商業產品或者開源項目的時候, 還是不建議搞彩蛋,防止出現一些宗教信仰問題,導致開發成果"毀于一蛋".

⑤ 302 Move temporarily
臨時重定向

重定向就相當于手機號碼中的 “呼叫轉移” 功能. 比如我本來的手機號是 1314, 后來換了個新號碼 520, 那么不需要讓我的朋友知道新號碼,只要我去辦理一個呼叫轉移業務, 其他人撥打 1314 , 就會自動轉移到 520 上.
在登陸頁面中經常會見到 302. 用于實現登陸成功后自動跳轉到主頁.

碼云的登陸頁面: 碼云頁面登陸
抓包看到的響應結果:

在這里插入圖片描述

⑥ 301 Moved Permanently
永久重定向

當瀏覽器收到這種響應時, 后續的請求都會被自動改成新的地址. 301 也是通過 Location 字段來表示要重定向到的新地址.

狀態碼小結

在這里插入圖片描述

1.2 認識響應"報頭"

響應報頭的基本格式和請求報頭的格式基本一致. 詳細可見上一篇文章: 【網絡原理】從零開始深入理解HTTP的報文格式(一)
類似于 Content-Type , Content-Length 等屬性的含義也和請求中的含義一致.

Content-Type

響應中的 Content-Type 常見取值有以下幾種:
? text/html : body 數據格式是 HTML
? text/css : body 數據格式是 CSS
? application/javascript : body 數據格式是 JavaScript
? application/json : body 數據格式是 JSON

在這里插入圖片描述
關于 Content-Type 的詳細情況: MIME types

1.3 認識響應"正文"(body)

正文的具體格式取決于 Content-Type. 觀察上面幾個抓包結果中的響應部分.

① text/html

在這里插入圖片描述
② text/css

在這里插入圖片描述

③ application/javascript

在這里插入圖片描述

④ application/json

在這里插入圖片描述

2. 構造HTTP請求

2.1 通過form表單構造HTTP請求.

form (表單) 是 HTML 中的一個常用標簽. 可以用于給服務器發送 GET 或者 POST 請求. form 只支持 GET 或者 POST 請求

Ⅰ form發送GET請求

form 的重要參數:
? action: 構造的 HTTP 請求的 URL 是什么.
? method: 構造的 HTTP 請求的 方法 是 GET 還是 POST (form 只支持 GET 和 POST).

input 的重要參數:
? type: 表示輸入框的類型. text 表示文本, password 表示密碼, submit 表示提交按鈕.
? name: 表示構造出的 HTTP 請求的 query string 的 key. query string 的 value 就是輸?框的用戶輸入的內容.
? value: input 標簽的值. 對于 type 為 submit 類型來說, value 就對應了按鈕上顯示的文本.

使用VSCode編譯器,創建一個文件命名為form.html. 右側輸入 ! 再按TAB鍵代碼基本框架就出來了.

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>hello</title>
</head>
<body><form action="http://www.sogou.com/abc.html" method="get"><input type="text" name="key1"><input type="text" name="key2"><input type="text" name="key3"><input type="submit" value="提交"></form>
</body>
</html>

頁面展示效果:

在這里插入圖片描述
在輸入框中隨便填寫數據,并提交

在這里插入圖片描述

構造的get 請求如下:

GET https://www.sogou.com/abc.html?key1=13&key2=14&key3=520 HTTP/1.1
Host: www.sogou.com
Connection: keep-alive
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/135.0.0.0 Safari/537.36 Edg/135.0.0.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7
sec-ch-ua: "Microsoft Edge";v="135", "Not-A.Brand";v="8", "Chromium";v="135"
sec-ch-ua-mobile: ?0
sec-ch-ua-platform: "Windows"
Sec-Fetch-Site: cross-site
Sec-Fetch-Mode: navigate
Sec-Fetch-User: ?1
Sec-Fetch-Dest: document
Accept-Encoding: gzip, deflate, br, zstd
Accept-Language: zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6
Cookie: cuid=AAG2VbIdUwAAAAuipyOMMwAANgg=; SUV=1745486111856508; SNUID=4F22AF328583B539A426D88686764390; ABTEST=0|1745830865|v17; SUID=5B5768DF3EA7A20B00000000680F43D1; IPLOC=CN4400; LSTMV=345%2C204; LCLKINT=1918; browerV=3; osV=1

Ⅱ form發送POST請求

將上述代碼中method = ‘‘get’’ 改成 method = '‘post’'即可.

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>hello</title>
</head>
<body><form action="http://www.sogou.com/abc.html" method="post"><input type="text" name="key1"><input type="text" name="key2"><input type="text" name="key3"><input type="submit" value="提交"></form>
</body>
</html>

構造的post請求如下:

POST http://www.sogou.com/abc.html HTTP/1.1
Host: www.sogou.com
Connection: keep-alive
Content-Length: 24
Cache-Control: max-age=0
Origin: null
Content-Type: application/x-www-form-urlencoded
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/135.0.0.0 Safari/537.36 Edg/135.0.0.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6key1=13&key2=14&key3=520

主要的區別:
① method 從 GET 變成了 POST.
② 數據從 query string 移動到了 body 中.

2.2 利用ajax構造HTTP請求

從前端角度, 除了瀏覽器地址欄能構造 GET 請求, form 表單能構造 GET 和 POST 之外, 還可以通過ajax 的方式來構造 HTTP 請求. 并且功能更強大.
現在的網站,主體都是通過 ajax 的方式來進行交互的.
特點是可以不需要 刷新頁面/頁面跳轉 就能進行數據傳輸.

Ⅰ 利用 ajax 發送 GET 請求

瀏覽器原生提供了 ajax 的 api 特別難用, 但好在有一些第三方庫封裝了 ajax. 本文使用的是 jquery 這個庫.

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>ajax</title>
</head>
<body><script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.7.1/jquery.min.js"></script><script>//就是編寫自己的 js 代碼.$.ajax({type: 'get',url: 'https://www.sogou.com/abc.html?',success: function(body) {console.log(body);}});</script>
</body>
</html>

構造get的請求如下:

GET https://cdn.bootcdn.net/ajax/libs/jquery/3.7.1/jquery.min.js HTTP/1.1
Host: cdn.bootcdn.net
Connection: keep-alive
sec-ch-ua-platform: "Windows"
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/135.0.0.0 Safari/537.36 Edg/135.0.0.0
sec-ch-ua: "Microsoft Edge";v="135", "Not-A.Brand";v="8", "Chromium";v="135"
sec-ch-ua-mobile: ?0
Accept: */*
Sec-Fetch-Site: cross-site
Sec-Fetch-Mode: no-cors
Sec-Fetch-Dest: script
Sec-Fetch-Storage-Access: active
Accept-Encoding: gzip, deflate, br, zstd
Accept-Language: zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6

Ⅱ 利用 ajax 發送POST請求

對于 POST 請求, 需要設置 body 的內容
1. 先使用 setRequestHeader 設置 Content-Type
2. 再通過 send 的參數設置 body 內容.

    <!DOCTYPE html><html lang="en"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>ajax</title></head><body><script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.7.1/jquery.min.js"></script><script>//就是編寫自己的 js 代碼.$.ajax({type: 'post',url: 'https://www.sogou.com/abc.html?',contentType: 'application/x-www-form-urlencoded',body: 'studentName=zhangsan',success: function(body) {console.log(body);}});</script></body></html>

構造的post請求如下:

POST https://www.sogou.com/abc.html? HTTP/1.1
Host: www.sogou.com
Connection: keep-alive
Content-Length: 0
Pragma: no-cache
Cache-Control: no-cache
sec-ch-ua-platform: "Windows"
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/135.0.0.0 Safari/537.36 Edg/135.0.0.0
Accept: */*
sec-ch-ua: "Microsoft Edge";v="135", "Not-A.Brand";v="8", "Chromium";v="135"
Content-Type: application/x-www-form-urlencoded
sec-ch-ua-mobile: ?0
Origin: null
Sec-Fetch-Site: cross-site
Sec-Fetch-Mode: cors
Sec-Fetch-Dest: empty
Accept-Encoding: gzip, deflate, br, zstd
Accept-Language: zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6

2.3 利用postman構造HTTP請求

能夠構造 http 請求的第三方工具,非常多的,本文章主要使用的 postman , 也有很多其他的工具, 都大同小異. 這些工具一般都來測試.

可以先下載postman
postman官方網站
下載完后再注冊一個賬號, 注冊郵箱建議用@163.

注冊完了之后:

① 創建一個倉庫

在這里插入圖片描述

② 構造HTTP請求

在這里插入圖片描述

③ 還可以自動生成代碼

不會寫前端代碼也沒事.

在這里插入圖片描述








本篇博客到這里就結束啦, 下篇文章再來介紹HTTPS, 感謝觀看 ???

🐎期待與你的下一次相遇😊😊😊

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

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

相關文章

Microsoft .NET Framework 3.5 離線安裝包 下載

Microsoft. NET Framework 3.5 是支持生成和運行下一代應用程序和XML Web Services 的內部Windows 組件&#xff0c; 對 .NET Framework 2.0 和 3.0 中的許多新功能進行了更新和增補&#xff0c; 且附帶了 .NET Framework 2.0 Service Pack 1 和 .NET Framework 3.0 Service…

Flask + ajax上傳文件(三)--圖片上傳與OCR識別

本教程將詳細介紹如何使用Flask框架構建一個圖片上傳與文字識別(OCR)的Web應用。我們將使用EasyOCR作為OCR引擎,實現一個支持中文和英文識別的完整應用。 環境準備 首先,確保你已經安裝了Python 3.7+環境,然后安裝必要的依賴庫: pip install flask easyocr pillow werkz…

模型部署技巧(一)

模型部署技巧&#xff08;一&#xff09; 以下內容是參考CUDA與TensorRT模型部署內容第六章&#xff0c;主要針對圖像的前/后處理中的trick。 參考&#xff1a; 1.部署分類器-int8-calibration 2. cudnn安裝地址 3. 如何查找Tensor版本&#xff0c;與cuda 和 cudnn匹配 4. ti…

MySQL--數據引擎詳解

存儲引擎 MySQL體系結構 連接層&#xff1a; 主要接收客戶端的連接&#xff0c;然后完成一些鏈接的處理&#xff0c;以及認證授權的相關操作和安全方案&#xff0c;還要去檢查是否超過最大連接數等等&#xff0c;比如在連接MySQL服務器時需要輸入用戶名&#xff0c;密碼&#…

【含文檔+PPT+源碼】基于微信小程序的健康飲食食譜推薦平臺的設計與實現

項目介紹 本課程演示的是一款基于微信小程序的健康飲食食譜推薦平臺的設計與實現&#xff0c;主要針對計算機相關專業的正在做畢設的學生與需要項目實戰練習的 Java 學習者。 1.包含&#xff1a;項目源碼、項目文檔、數據庫腳本、軟件工具等所有資料 2.帶你從零開始部署運行本…

當OA闖入元宇宙:打卡、報銷和會議的未來狂想

引言&#xff1a;虛實共生中的組織基因突變 元宇宙正以虛實共生的形態重構人類協作的底層邏輯。傳統OA系統建立的物理規則——指紋打卡驗證在場性、紙質票據堆砌信任鏈、會議室排期協調時空資源——在元宇宙的數字原野上迎來基因級重組。這場變革不僅是技術工具的迭代&#xf…

解決vscode cmake提示檢測到 #include 錯誤

一、問題 cmake已經包含了動態庫文件&#xff0c;依然提示“檢測到 #include 錯誤。請更新 includePath。” 二、解決方案 Ctrl Shift P進入CPP編輯配置&#xff0c;然后在JSON中加入下面一行&#xff1a; "configurationProvider": "ms-vscode.cmake-tools&…

2024ICPC成都題解

文章目錄 L. Recover Statistics(簽到)J. Grand Prix of Ballance(模擬簽到)A. Arrow a Row(構造)B. Athlete Welcome Ceremony(線性dp)G. Expanding Array(打表結論)I. Good Partitions(線段樹)E. Disrupting Communications(換根dpLCA倍增)K. Magical Set(費用流) 題目鏈接 …

達夢數據庫官方遷移工具SQLark:支持Oracle/MySQL/PostgreSQL遷移至達夢數據庫!

SQLark 百靈連接是一款面向信創應用開發者的數據庫開發和管理工具&#xff0c;由達夢數據歷時三年自主研發&#xff0c;注冊即可免費使用客戶端&#xff08;官網鏈接www.sqlark.com&#xff09;。今天&#xff0c;我們將重點介紹SQLark的特色功能之一——數據遷移&#xff0c;該…

映射關系4

好&#xff01;我明白了&#xff01;&#x1f4a5; 你希望我在你的基礎上&#xff0c;繼續優化 insertPathWithIds&#xff0c;讓它&#xff1a; ? 支持每一級節點的 idPart 是字符串&#xff08;而不是int&#xff09;。 ? 結構更清晰&#xff0c;更快拼接。 ? 完全符合C98…

PDF Shaper v15.0

如今對PDF處理的軟件很多都是只是單一的功能。PDF Shaper給你完全不同的體驗&#xff0c;因為PDF Shaper是一款免費的PDF工具集合的軟件。有了PDF Shaper&#xff0c;你以后再也不用下載其他處理PDF的軟件了。PDF Shaper的功能有&#xff1a;合并&#xff0c;分割&#xff0c;加…

【Python爬蟲基礎篇】--4.Selenium入門詳細教程

先解釋&#xff1a;Selenium&#xff1a;n.硒&#xff1b;硒元素 目錄 1.Selenium--簡介 2.Selenium--原理 3.Selenium--環境搭建 4.Selenium--簡單案例 5.Selenium--定位方式 6.Selenium--常用方法 6.1.控制操作 6.2.鼠標操作 6.3.鍵盤操作 6.4.獲取斷言信息 6.5.…

mysql8.0版本部署+日志清理+rsync備份策略

mysql安裝&#xff1a;https://blog.csdn.net/qq_39399966/article/details/120205461 系統&#xff1a;centos7.9 數據庫版本&#xff1a;mysql8.0.28 1.卸載舊的mysql,保證環境純凈 rpm -qa | grep mariadb mariadb-5.... rpm -e --nodeps 軟件 rpm -e --nodeps mariadb-5.…

C#進階學習(十七)PriorityQueue<TElement, TPriority>優先級隊列的介紹

1. PriorityQueue是什么&#xff1f;作用是什么&#xff1f; 定義&#xff1a;PriorityQueue<TElement, TPriority> 是 C# (.NET 6 引入) 中的泛型優先級隊列數據結構。 那么是什么是優先級隊列呢&#xff1f;優先級隊列是一種抽象數據結構&#xff0c;其核心特性是元素按…

如何查看和驗證AWS CloudFront的托管區域ID

在使用AWS Route 53設置DNS記錄時,正確識別CloudFront分發的托管區域ID是至關重要的。本文將詳細介紹幾種查看和驗證CloudFront托管區域ID的方法,特別關注中國區CloudFront的特殊情況。 為什么托管區域ID很重要? 托管區域ID是AWS服務中的一個關鍵標識符。在創建指向CloudF…

kafka整合flume與DStream轉換

一、Kafka整合flume cd /opt/software/flume/conf/ vi flume-kafka.conf a1.sourcesr1 a1.sinksk1 a1.channelsc1 a1.sources.r1.typespooldirt a1.sources.r1.spoolDir/root/flume-kafka a1.sinks.k1.typeorg.apache.flume.sink.kafka.KafkaSink a1.sinks.k1.kafka.to…

網絡通訊【QTcpServer、QTcpSocket、QAbstractSocket】

目錄 QTcpServer class簡單描述成員函數和信號 QTcpSocket Class詳細描述成員函數和信號 QAbstractSocket Class詳細描述成員函數和信號成員函數說明文檔 QT實現服務器和客戶端通訊服務器端&#xff1a;通訊流程原代碼 客戶端通信流程原代碼 QTcpServer class header: #includ…

大模型在腎癌診療全流程中的應用研究報告

目錄 一、引言 1.1 研究背景與意義 1.2 研究目的與方法 1.3 國內外研究現狀 二、大模型預測腎癌術前情況 2.1 基于影像組學的腎癌良惡性及分級預測 2.1.1 MRI 影像組學模型預測腎透明細胞癌分級 2.1.2 CT 影像深度學習模型鑒別腎腫物良惡性及侵襲性 2.2 大模型對手術風…

網絡原理 - 11(HTTP/HTTPS - 2 - 請求)

目錄 HTTP 請求&#xff08;Request&#xff09; 認識 URL URL 基本格式 關于 URL encode 認識方法&#xff08;method&#xff09; 1. GET 方法 2. POST 方法 認識請求“報頭”&#xff08;header&#xff09; Host Content-Length Content-Type User-Agent&…

實現MySQL高可用性:從原理到實踐

目錄 一、概述 1.什么是MySQL高可用 2.方案組成 3.優勢 二、資源清單 三、案例實施 1.修改主機名 2.安裝MySQL數據庫&#xff08;Master1、Master2&#xff09; 3.配置mysql雙主復制 4.安裝haproxy&#xff08;keepalived1、keepalived2&#xff09; 5.安裝keepaliv…