【Linux網絡編程】應用層協議HTTP(請求方法,狀態碼,重定向,cookie,session)

?🎁個人主頁:我們的五年

🔍系列專欄:Linux網絡編程

🌷追光的人,終會萬丈光芒

🎉歡迎大家點贊👍評論📝收藏?文章

?

Linux網絡編程筆記:

https://blog.csdn.net/djdjiejsn/category_12885098.html

前言:

前面講了HTTP的請求,響應格式。但是里面的知識點還沒有細講。報文里面的內容沒有講。這篇就是對HTTP的詳細講解。

目錄

1.簡單信息

1.1HTTP的基本信息:

1.2URL網址:

2.請求格式:

2.1基本格式:?

3.請求方法:

3.1GET方法:

3.2POST方法:

3.3PUT方法:

3.4HEAD方法:

3.5DELETE方法:

3.6OPTIONS方法:

4.HTTP響應狀態碼(了解):

4.1:1開頭的狀態碼

4.2:2開頭的狀態碼

4.3:3開頭的狀態碼

4.3:4開頭的狀態碼

?4.3:5開頭的狀態碼

5.重定向:

6.報頭header

6.1關于cookie:

6.2關于session

6.3關于connection


1.簡單信息

1.1HTTP的基本信息:

HTTP的英文是:(HyperText? Transfer? Protocol)超文本傳輸協議首字母的縮寫。

超文本可以添加鏈接,有了鏈接,就可以從一個網站到另一個網站,可以傳輸圖片,視頻,音頻,

超文本(Hypertext)是一種通過鏈接將文本的不同部分或不同文本之間相互連接的文本結構。

超文本最重要的部分就是鏈接功能了。

HTTP協議就是定義了瀏覽器(客戶端Client)和服務器(服務端Server)的協議。HTTP是瀏覽器和服務器之間通信的基礎。客戶端給服務器發送請求,然后服務器收到以后,對請求進行處理,然后給客服端回響應。響應的可能是服務器上的資源(GET方法),或者提交資源(POST方法)……

HTTP是無連接的,無狀態的協議,每次請求都要建立新的連接,服務器也不會保存客戶端的信息。對于網站讓我們登錄進去可以,就認識我們了,以后每次請求都認識我們了,是服務器里面cookie的功勞。

1.2URL網址:

然后URL網址的基本信息,之前也講過了,Encode,DeCode,下面的圖講的也是非常的清楚。

關于Encode,DeCode就可以去看這篇文章:

【Linux網絡編程】:URL(encode),HTTP協議,telnet工具-CSDN博客


2.請求格式:

基本的格式這篇文章也講了:(點擊進入就可以)

【Linux網絡編程】:URL(encode),HTTP協議,telnet工具-CSDN博客

2.1基本格式:?

基本格式就是是這樣,然后就是講里面的具體參數了。

請求報頭Header會有一個參數Content-Length來標識請求正文的長度。

空行后面的內容就是請求正文。


3.請求方法:

請求方法有很多種,用了區分請求是要干什么,服務器要知道客戶端要干什么才有后面的。

雖然請求有很多種,但是每種不可能都執行,大部分都是不允許的,比如向服務器上次資源(百度網盤,這種服務方向的除外),基本的是不允許隨便上傳,或者再向寫文章,在抖音上產視頻,也只是開放了部分的資源。部分接口。在合理,正常功能內上傳資源,刪除資源肯定是沒問題了。

下面的表格由Kimi生成。

序號請求方法描述
1GET請求指定的頁面信息,并返回實體主體。通常用于獲取數據,不會對數據進行更改。
2HEAD類似于GET請求,但只返回HTTP報頭,不返回文檔主體。常用于檢查資源是否存在或獲取資源的元數據
3POST向指定資源提交數據進行處理請求(例如提交表單或者上傳文件)。數據被包含在請求體中,可能會導致新的資源的建立和/或已有資源的修改。
4PUT從客戶端向服務器傳送的數據取代指定的文檔的內容。如果資源不存在,可能會創建新的資源。
5DELETE請求服務器刪除指定的頁面或資源
6CONNECT把請求連接轉換到透明的TCP/IP通道,通常用于代理服務器或建立HTTPS連接。
7OPTIONS返回服務器支持的HTTP方法。常用于跨域資源共享(CORS)的預檢請求。
8TRACE回顯服務器收到的請求,主要用于測試或診斷。
9PATCH對資源進行部分修改,實體中包含一個表,表中說明與該URI所表示的原內容的區別。
10MOVE請求服務器將指定的頁面移至另一個網絡地址。
11COPY請求服務器將指定的頁面拷貝至另一個網絡地址。
12LINK請求服務器建立鏈接關系。
13UNLINK請求服務器斷開鏈接關系。
14WRAPPED允許客戶端發送經過封裝的請求。
15Extension-method在不改動協議的前提下,可增加另外的方法。

3.1GET方法:

🍟作用:用于請求URL的指定資源

🍟示例:GET(請求方法)? ? ? ? ? ? ?/index.html(URL)? ? ? ? ? ? ? HTTP/1.1(HTTP版本)。(請求行,要請求的就是服務器下面的iindex.html,當然可以對這個路徑進行解析,在開頭增加目錄)。

🍟特性:指定資源經服務器端解析后返回響應內容。

3.2POST方法:

🍟用途:用于傳輸實體的主體,通常用于提交表單數據。
🍟示例:POST? ? ? ? ? ? ? ? ? ?submit.cgi? ? ? ? ? ? ? ? ? ? ? ?HTTP/1.1
🍟特性:可以發送大量的數據給服務器,并且數據包含在請求體中

3.3PUT方法:

🍟用途:用于傳輸文件,將請求報文主體中的文件保存到請求 URL 指定的位置
🍟示例:PUT? ? ? ? ? ? ? ? ? ? ? /example.html? ? ? ? ? ? ? ? ? ? ? ? HTTP/1.1
🍟特性:不太常用,但在某些情況下,如 RESTful API 中,用于更新資源

3.4HEAD方法:

🍟用途:與 GET 方法類似,但不返回報文主體部分,僅返回響應頭。
🍟示例:HEAD /index.html HTTP/1.1
🍟特性:用于確認 URL 的有效性及資源更新的日期時間等。

3.5DELETE方法:

🍟用途:用于刪除文件,是 PUT 的相反方法。
🍟示例:DELETE? ? ? ? ? ? ? ? ? ? ? ? ?/example.html? ? ? ? ? ? ? ? ? ? ? ? HTTP/1.1
🍟特性:按請求 URL 刪除指定的資源

3.6OPTIONS方法:

🍟用途:用于查詢針對請求 URL 指定的資源支持的方法。
🍟示例:OPTIONS? ? ? ? ? ?*? ? ? ? ? ? ? ? ? ? ? ? ?HTTP/1.1
🍟特性返回允許的方法,如 GET、POST 等。


4.HTTP響應狀態碼(了解):

雖然定了規定的狀態碼,但是各個瀏覽器器直接沒有好好的遵循。各個瀏覽器之間是競爭關系,狀態碼也各不一樣。對于對于狀態碼瀏覽器來說,狀態碼也沒那么重要。

所以在不同的瀏覽器之間,相同的狀態碼表示不同的信息。

前端工作人員可能也不會嚴格遵循,畢竟還要做兼容性檢查。不同狀態碼也能被解釋。

4.1:1開頭的狀態碼

1xx(信息性狀態碼):請求已被接受,正在繼續處理。

具體的看下表:

100,主要是在上傳大型文件的時候,表示服務器已經接受到了,正在處理。

狀態碼狀態說明
100繼續請求者應當繼續提出請求。服務器已收到請求的第一部分,正在等待其余部分。
101切換協議請求者已要求服務器切換協議,服務器已確認并準備切換。
102繼續執行由WebDAV擴展的狀態碼,代表處理將被繼續執行。
103早期提醒利用服務器思考時間來傳遞內容,當瀏覽器向服務器發出請求時等待回應時,由邊緣網絡線發送頁面載入提示給瀏覽器。

4.2:2開頭的狀態碼

2xx(成功狀態碼):請求已成功被服務器處理。

狀態碼狀態說明
200成功服務器已成功處理了請求,通常表示服務器提供了請求的網頁。
201已創建請求成功并且服務器創建了新的資源。
202已接受服務器已接受請求,但尚未處理。
203非授權信息服務器已成功處理了請求,但返回的信息可能來自另一來源。
204無內容服務器成功處理了請求,但沒有返回任何內容。
205重置內容服務器成功處理了請求,但沒有返回任何內容,要求客戶端重置視圖。
206部分內容服務器成功處理了部分GET請求。
207多種狀態由WebDAV狀態碼,代表之后的消息體將是一個XML消息,且可能依照之前子請求數量不同,含一系列獨立的響應代碼

4.3:3開頭的狀態碼

3xx(重定向狀態碼):客戶端需要進一步操作才能完成請求

狀態碼狀態說明
300多種選擇針對不同請求,服務器可執行多種操作。
301永久移動請求的網頁已永久移動到新位置。
302資源已找到(臨時移動)告訴客戶端,請到另一處URL獲取需要的資源。
303查看其他位置請求者應當對不同的位置使用單獨的GET請求來獲取資源。
304資源未修改自從上次請求后,網頁未做過修改。
305使用代理請求者只能使用代理訪問所請求的資源。
307臨時重定向服務器臨時重定向請求到另一個URL。
308永久重定向請求的資源永久移動,客戶端應使用新URL

4.3:4開頭的狀態碼

請求有錯誤,客戶端可能需要修改請求

狀態碼狀態說明
400請求錯誤請求有語法錯誤。
401未授權請求未授權。
403禁止服務器拒絕執行。
404未找到請求的資源不存在。
405方法不允許請求方法不被允許。
406不接受服務器無法提供請求的資源。
407需要代理認證需要代理服務器認證。
408請求超時請求超時。
409沖突請求與資源的當前狀態沖突。
410已刪除請求的資源已被永久刪除。
411需要長度服務器拒絕處理當前請求,因為請求的內容長度未定義。
412先決條件失敗服務器在驗證請求的頭字段中給出的先決條件時,未能滿足其中的一個或多個。
413負載過大請求提交的實體數據大小超過了服務器愿意或能夠處理的范圍。
414URI過長請求的URI長度超過了服務器能夠解釋的長度。
415不支持的媒體類型請求中提交的實體并不是服務器中所支持的格式。
416范圍不符合請求的范圍不符合。
417期望失敗在請求頭Expect中指定的預期內容無法被服務器滿足。
422不可處理的實體請求格式正確,但服務器無法處理。
429請求過多客戶端在給定的時間內發送了過多的請求

?4.3:5開頭的狀態碼

5xx(服務器錯誤狀態碼):服務器在處理請求時發生了錯誤

狀態碼狀態說明
500內部服務器錯誤服務器內部錯誤。
501未實現服務器無法處理請求。
502錯誤網關無效的網關。
503服務不可用服務器暫時不可用。
504網關超時網關超時。
505HTTP版本不支持服務器不支持請求的HTTP版本

5.重定向:

重定向有兩種,一種是臨時重定向,還有一種是永久重定向。不管是永久重定向還有臨時重定向,都是和報頭中的location有關的,當請求的URL需要重定向到新的URL時,header就會帶location信息。

比如下面就是302臨時重定向,錯誤碼描述是Found,然后需要重定向到https://www.new-url.com。(這里)

HTTP/1.1? ? ? ?302? ? ? ? ?Found\r\n

Location: https://www.new-url.com\r\n


6.報頭header

報文里面可能下面以下信息,也可以一個都沒有,比如有正文body,但是沒有Content,瀏覽器一樣可以解釋,瀏覽器還是很厲害的。

然后就是我們可以根據請求的資源區分是什么類型的文本,HTML還是TXT,還是其他的。

Content-Type: 數據類型(text/html 等)。

Content-Length: Body 的長度。
Host: 客戶端告知服務器, 所請求的資源是在哪個主機的哪個端口上;

User-Agent: 聲明用戶的操作系統和瀏覽器版本信息;

referer: 當前頁面是從哪個頁面跳轉過來的;

Location: 搭配 3xx 狀態碼使用, 告訴客戶端接下來要去哪里訪問;

Cookie: 用于在客戶端存儲少量信息. 通常用于實現會話(session)的功能;

6.1關于cookie:

cookie會保存我們的信息,比如我們登陸一個網站,輸入了用戶名,密碼。下次訪問這個網站的時候,就直接把這些信息加到HTTP請求里面。我們就不需要進行登錄了,然后就可以查看這些信息了,當然這些信息我們解析不出來是什么。

6.2關于session

session的話,就是防止我們的信息泄露,再保存了cookie信息的時候,只用代號進行傳輸,當然代號也可以被盜走,但至少我們具體的用戶名,信息不會盜走。也就是可能黑客可以登錄盜走的QQ,但是沒有辦法知道密碼,進行改密碼。

6.3關于connection

?這個就表示連接的信息:需要長連接還是短連接。HTTP1.1版本默認使用長連接,即報頭沒有connection信息的時候,就是和服務器建立長的連接。HTTP1.0使用的是短連接,要長連接需要再報頭中加入Connection: keep-alive。

HTTP/1.1:在 HTTP/1.1 協議中,默認使用持久連接。當客戶端和服務器都不明確指定關閉連接時,連接將保持打開狀態,以便后續的請求和響應可以復用同一個連接。

HTTP/1.0:在 HTTP/1.0 協議中,默認連接是非持久連接。如果希望在 HTTP/1.0上實現持久連接,需要在請求頭中顯式設置 Connection: keep-alive

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

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

相關文章

Vue3 打造 Windows 桌面個性高效組件工具

軟件介紹 Widgets 這款基于 Vue3 構建的開源 Windows 桌面小部件工具超實用。 其多樣化組件庫涵蓋超 20 種,從倒計時、打工進度等實用工具,到抖音熱榜等實時資訊組件應有盡有,各組件獨立運行,滿足多場景需求。 高度自定義布局支持…

Tailwind CSS 和 UnoCSS簡單比較

一、Tailwind CSS 和 UnoCSS簡介 Tailwind CSS 和 UnoCSS 都是流行的原子化 CSS 框架,它們有很多相似之處,但也存在一些明顯的區別,以下從多個方面對它們進行比較: 1. 基本概念和原理 Tailwind CSS 是最早提出并推動原子化 CSS…

什么是語料清洗、預訓練、指令微調、強化學習、內容安全; 什么是megatron,deepspeed,vllm推理加速框架

什么是語料清洗、預訓練、指令微調、強化學習、內容安全 目錄 什么是語料清洗、預訓練、指令微調、強化學習、內容安全語料清洗預訓練指令微調強化學習內容安全什么是megatron,deepspeed,vllm推理加速框架語料清洗 語料清洗是對原始文本數據進行處理的過程,旨在去除數據中的…

C++(23):lambda可以省略()

C越來越多的使用了lambda&#xff0c;C23也進一步的放寬了對lambda的限制&#xff0c;這一次&#xff0c;如果lambda沒有參數列表&#xff0c;那么可以直接省略掉()&#xff1a; #include <iostream> using namespace std;void func() {auto f []{cout<<"in…

自制操作系統分享第四天

今天要做什么&#xff1f; &#xff08;1&#xff09;分享 我們上面已經說過INT 0x13這種指令&#xff08;調用BIOS的INT指令&#xff09;&#xff0c;我們知道這是調用BIOS的0x13函數&#xff0c;但還不明白它到底是干什么用的&#xff1a; AH 0x02;# 讀盤 AH 0x03;# 寫…

DeepSeek預測25考研分數線

25考研分數馬上要出了。 目前&#xff0c;多所大學已經陸續給出了分數查分時間&#xff0c;綜合往年情況來看&#xff0c;每年的查分時間一般集中在2月底。 等待出成績的日子&#xff0c;學子們的心情是萬分焦急&#xff0c;小編用最近爆火的“活人感”十足的DeepSeek幫大家預…

Android 動態加入Activity 時 manifest 注冊報錯解決。使用manifestPlaceholders 占位

需求如下&#xff1a; 項目 測試demo 有多個渠道&#xff0c;部分渠道包含支付功能&#xff0c;在主測試代碼外&#xff0c;需要一個單獨 Activity 調用測試代碼。 MainActivityPayActivity渠道A包含不包含渠道B包含包含 因為支付功能需要引入對應的 moudule&#xff0c;因此…

FRRouting配置與OSPF介紹,配置,命令,bfd算法:

文章目錄 1、frrouting的配置&#xff1a;2、ospf2.1、檢測和維護鄰居關系2.2、ospfDR和BDR2.3、odpf鄰居表2.4、ospf常用命令2.5、bfd配置 1、frrouting的配置&#xff1a; sudo service zebra start sudo service ospfd start telnet localhost 2604 en configure termina…

Perplexity 開源DeepSeek-R1 模型新版本 R1-1776

引言 在人工智能領域&#xff0c;模型的更新迭代如同科技界的時尚潮流&#xff0c;不斷推陳出新。今天&#xff0c;我們要介紹的是Perplexity AI開源的新版推理模型——DeepSeek-R1 1776。這個版本不僅繼承了前代的強大性能&#xff0c;還在公正性和準確性上進行了顯著提升。那…

關系中出現這10個信號,離分手就不遠了(愛情友情都適用)

親密關系的隱形裂痕 在一個陽光明媚卻略顯蕭瑟的午后&#xff0c;咖啡杯里的咖啡已經涼透。小李盯著手機屏幕&#xff0c;那些曾經熱烈的對話記錄現在看起來如此陌生&#xff0c;仿佛隔著一層薄薄的霧。她終于意識到&#xff0c;這段關系已經悄然走向盡頭。 親密關系是一場精心…

馬斯克Grok3使用入口和訂閱教程(白嫖150刀API額度)

文章目錄 馬斯克Grok3使用入口和訂閱教程(白嫖150刀API額度)前言介紹如何訂閱X上Premium服務國內訂閱X的Premium教程 白嫖教程小結 馬斯克Grok3使用入口和訂閱教程(白嫖150刀API額度) 前言介紹 重點&#xff1a;Grok 3僅對X上的Premium用戶開放。你需要訂閱X的Premium服務才能…

相機開發調中廣角和焦距有什么不一樣

在相機中,調整廣角和調整焦距是兩個不同的概念,它們的作用和實現方式也不同。以下是兩者的詳細對比和解釋: 1. 調整廣角 定義 廣角是指相機的視野范圍(Field of View, FOV)。調整廣角實際上是調整相機的視野范圍。更廣的視野意味著可以捕捉到更多的場景內容(更寬的畫面)…

讓大模型幫我設計crnn網絡及可運行demo,gpt4o豆包qwendeepseek-r1

prompt 使用 crnn 提取圖像特征&#xff0c;給出圖像好壞的二分類結果&#xff0c;寫清楚代碼備注&#xff0c;注釋清楚向量維度大小&#xff0c;并給出一個可運行的 demo1、GPT-4o 以下是一個使用 CRNN&#xff08;Convolutional Recurrent Neural Network&#xff09;提取圖…

DeepBI助力跨境電商打破流量壟斷:AI驅動的亞馬遜廣告投放新打法

#亞馬遜廣告優化# 親愛的亞馬遜跨境電商賣家們&#xff0c;是否曾因亞馬遜的廣告打法不清晰&#xff0c;或是糾結于亞馬遜廣告費用過高&#xff0c;或是為亞馬遜電商廣告怎么投放合適的問題而苦惱&#xff1f;在競爭激烈的亞馬遜市場中&#xff0c;廣告投放效果平平&#xff0…

前端基礎入門:HTML、CSS 和 JavaScript

在現代網頁開發中,前端技術扮演著至關重要的角色。無論是個人網站、企業官網,還是復雜的 Web 應用程序,前端開發的基礎技術 HTML、CSS 和 JavaScript 都是每個開發者必須掌握的核心技能。本文將詳細介紹這三者的基本概念及其應用 一、HTML——網頁的骨架 HTML(HyperText …

單元測試junit5

一、idea 安裝自動化生成插件jcode5 安裝可能不成功&#xff0c;嘗試多次安裝&#xff1b; 安裝成功后&#xff0c;重啟idea&#xff0c;再次確認安裝是否成功&#xff1b; 二、在需要生成單元測試代碼的模塊的pom中引入依賴 ......<parent><groupId>org.springf…

windows系統本地部署DeepSeek-R1全流程指南:Ollama+Docker+OpenWebUI

本文將手把手教您使用OllamaDockerOpenWebUI三件套在本地部署DeepSeek-R1大語言模型&#xff0c;實現私有化AI服務搭建。 一、環境準備 1.1 硬件要求 CPU&#xff1a;推薦Intel i7及以上&#xff08;需支持AVX2指令集&#xff09; 內存&#xff1a;最低16GB&#xff0c;推薦…

Windows Server 任務計劃

背景&#xff1a;QMT服務只能在windows服務器上面運行 直接在控制面板里面搜索"任務計劃"點進去 需要注意的是&#xff1a; 1.創建任務計劃選擇”不管用戶是否登錄都運行“&#xff0c;是否需要最高權限執行看你的需求 2.操作程序或腳本&#xff0c;選擇bat腳本就…

makefile+LSF

LSF LSF&#xff08;Load Sharing Facility&#xff09;是一種常用的集群作業調度系統&#xff0c;bsub 命令用于提交作業到 LSF 集群&#xff0c;而若要關閉&#xff08;終止&#xff09;一個正在運行的作業&#xff0c;需要使用 bkill 命令&#xff0c;下面為你詳細介紹相關…

spring boot知識點3

1.spring boot能否使用xml配置 可以&#xff0c;但是很繁瑣&#xff0c;現在都建議走JavaConfig 2.spring boot的核心配置文件 application.properties application.yml 3.bootstrap.properties和application.properties的區別 b&#xff1a;用于遠程配置 a&#xff1a;…